Generated by Cython 0.24.1

Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.

Raw output: _renderer.c

+0001: """Copyright (c) 2010-2012 David Rio Vierra
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test_2, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0002: 
 0003: Permission to use, copy, modify, and/or distribute this software for any
 0004: purpose with or without fee is hereby granted, provided that the above
 0005: copyright notice and this permission notice appear in all copies.
 0006: 
 0007: THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 0008: WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 0009: MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 0010: ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 0011: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 0012: ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 0013: OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE."""
 0014: 
 0015: """
 0016: renderer.py
 0017: 
 0018: What is going on in this file?
 0019: 
 0020: Here is an attempt to show the relationships between classes and
 0021: their responsibilities
 0022: 
 0023: MCRenderer:
 0024:     has "position", "origin", optionally "viewFrustum"
 0025:     Loads chunks near position+origin, draws chunks offset by origin
 0026:     Calls visible on viewFrustum to exclude chunks
 0027: 
 0028: 
 0029:     (+) ChunkRenderer
 0030:         Has "chunkPosition", "invalidLayers", "lists"
 0031:         One per chunk and detail level.
 0032:         Creates display lists from BlockRenderers
 0033: 
 0034:         (*) BlockRenderer
 0035:             Has "vertexArrays"
 0036:             One per block type, plus one for low detail and one for Entity
 0037: 
 0038: BlockRender documentation
 0039: 
 0040:   Each Block renderer renders a particular block types or entities.
 0041: 
 0042:   The block renderer that is chosen to draw that block type(by ID)
 0043:   is the block renderer class that is lowest in the list within the
 0044:   makeRenderstates method. Each blockRenderer is assigned a materialIndex
 0045:   and the blockMaterial parameter indicates what material index each block
 0046:   in the chunk is therefore what block renderer is used to render it.
 0047: 
 0048:   Vertex arrays are arrays of vertices(groups of six elements) and
 0049:   every group of 4 vertices is a quad that will be drawn.
 0050: 
 0051:   Before the vertex arrays will be drawn `.ravel()` will be called
 0052:     (flattened to one dimension arrays).
 0053: 
 0054:     The vertex arrays will draw quads and each vertex elements
 0055:     with the foramt:
 0056:       0:3 index - xyz values
 0057:       3:5 index - st(texture coordinates) values
 0058:       5   index - rgba(colour) value
 0059:                   Note: each element of rgba value is a uint8 type(the 4 colour
 0060:                         elements makes up 32 bits) to view/change the values use
 0061:                         `.view('uint8')` to change the view of the array into uint8 type.
 0062: 
 0063:   To implement a block renderer either makeVertices or makeFaceVertices
 0064:   needs to be implemented. The base class BlockRenderer implements
 0065:   makeVertices in terms of makeFaceVertices, by iterating over the different
 0066:   face directions.
 0067: 
 0068:   The makeVertices function is called on the block renderer to gat a
 0069:   list of vertexArrays that will draw the blocks for a 16x16x16 chunk.
 0070: 
 0071:    parameters:
 0072: 
 0073:     all parameters are in xzy order
 0074: 
 0075:     facingBlockIndices:
 0076:       list of 6, (16, 16, 16) numpy boolean arrays
 0077: 
 0078:       each array corresponds to the blocks within the chunk that
 0079:       has it face exposed in that direction. The direction is the
 0080:       index into the list defined by the constants in pymclevel/faces.py
 0081: 
 0082:       This is used to only draw exposed faces
 0083: 
 0084:     blocks:
 0085:       (16, 16, 16) numpy array of the id of blocks in the chunk
 0086: 
 0087:     blockMaterials:
 0088:       (16, 16, 16) numpy array of the material index of each block in the chunk
 0089: 
 0090:       each material refers to a different block renderer to get the
 0091:       material index for this block renderer `self.materialIndex`
 0092: 
 0093:     blockData:
 0094:       (16, 16, 16) numpy array of the metadata value of each block
 0095:       in the chunk
 0096: 
 0097:     areaBlockLights:
 0098:       (18, 18, 18) numpy array of light value(max of block light and
 0099:       skylight) of the chunk and 1 block 'border' aroun it.
 0100: 
 0101:     texMap:
 0102:       function that takes id, data value and directions
 0103:       and returns texture coordinates
 0104: 
 0105:     returns a list of vertex arrays in the form of float32 numpy arrays.
 0106:     For this chunk.
 0107: 
 0108:   The makeFaceVertices gets an vertexArray for a particular face.
 0109: 
 0110:    parameters:
 0111: 
 0112:     all parameters are in xzy order
 0113: 
 0114:     direction:
 0115:       the face defined by constants in pymclevel/faces.py
 0116: 
 0117:     materialIndices:
 0118:       list of (x, z, y) indices of blocks in this chunks that
 0119:       is of this material(in blocktypes).
 0120: 
 0121:     exposedFaceIndices:
 0122:       list of (x, z, y) indices of blocks that has an exposed face
 0123:       in the direction `direction`.
 0124: 
 0125:     blocks:
 0126:       (16, 16, 16) numpy array of the id of blocks in the chunk
 0127: 
 0128:     blockData:
 0129:       (16, 16, 16) numpy array of the metadata value of each block
 0130:       in the chunk
 0131: 
 0132:     blockLights:
 0133:       (16, 16, 16) numpy array of light values(max of block light and
 0134:       skylight) of the blocks in the chunk chunk.
 0135: 
 0136:     facingBlockLight:
 0137:       (16, 16, 16) numpy array of light values(max of block light and
 0138:       skylight) of the blocks just in front of the face.
 0139: 
 0140:       i.e.
 0141:         if direction = pymclevel.faces.FaceXDecreasing
 0142:         facingBlockLight[1, 0, 0] refers to the light level
 0143:         at position (0, 0, 0) within the chunk.
 0144: 
 0145:     texMap:
 0146:       function that takes id, data value and directions
 0147:       and returns texture coordinates
 0148: 
 0149:     returns a list of vertex arrays in the form of float32 numpy arrays.
 0150: 
 0151:   Fields
 0152: 
 0153:     blocktypes / getBlocktypes(mats)
 0154:       list of block ids the block renderer handles
 0155: 
 0156:     detailLevels
 0157:       what detail level the renderer render at
 0158: 
 0159:     layer
 0160:       what layer is this block renderer in
 0161: 
 0162:     renderstate
 0163:       the render state this block renderer uses
 0164: 
 0165:   Models:
 0166: 
 0167:     There are also several functions that make it easy to translate
 0168:     json models to block renderer.
 0169: 
 0170:     makeVertexTemplatesFromJsonModel:
 0171:       creates a template from information that is in json models
 0172: 
 0173:     rotateTemplate:
 0174:       rotate templates. This is equivalent to the rotation in block states files.
 0175: 
 0176:     makeVerticesFromModel:
 0177:       creates function based on templates to be used for makeVertices function in block renderer.
 0178: 
 0179:   Helper functions:
 0180: 
 0181:     self.MaterialIndices(blockMaterial):
 0182:       Given blockMaterial(parameter in makeVertices) it return a list of
 0183:       (x, z, y) indices of blocks in the chunk that are of this block renderer
 0184:       material(blocktypes).
 0185: 
 0186:     self.makeTemplate(direction, blockIndices):
 0187:       get a vertex array filled with default values for face `direction`
 0188:       and for the block relating to `blockIndices`
 0189: 
 0190:     makeVertexTemplates(xmin=0, ymin=0, zmin=0, xmax=1, ymax=1, zmax=1):
 0191:       returns a numpy array with dimensions (6, 4, 6) filled with values to create
 0192:       a vertex array for a cube.
 0193: 
 0194:   For Entities:
 0195: 
 0196:     renderer's for entities are similar to blocks but:
 0197:       - they extend EntityRendererGeneric class
 0198:       - they are added to the list in calcFacesForChunkRenderer method
 0199:       - makeChunkVertices(chunk) where chunk is a chunk object
 0200:         is called rather than makeVertices
 0201: 
 0202:     there is also a helper method _computeVertices(positions, colors, offset, chunkPosition):
 0203:      parameters:
 0204:       positions
 0205:         locations of entity
 0206:       colors
 0207:         colors of entity boxes
 0208:       offset
 0209:         whether to offset the box
 0210:       chunkPosition
 0211:         chunk position of the chunk
 0212: 
 0213:       creates a vertex array that draws entity boxes
 0214: 
 0215: """
 0216: 
+0217: from collections import defaultdict, deque
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_defaultdict);
  __Pyx_GIVEREF(__pyx_n_s_defaultdict);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_defaultdict);
  __Pyx_INCREF(__pyx_n_s_deque);
  __Pyx_GIVEREF(__pyx_n_s_deque);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_deque);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_collections, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_defaultdict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_defaultdict, __pyx_t_1) < 0) __PYX_ERR(0, 217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_deque); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_deque, __pyx_t_1) < 0) __PYX_ERR(0, 217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0218: from datetime import datetime, timedelta
  __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_datetime);
  __Pyx_GIVEREF(__pyx_n_s_datetime);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_datetime);
  __Pyx_INCREF(__pyx_n_s_timedelta);
  __Pyx_GIVEREF(__pyx_n_s_timedelta);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_timedelta);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_datetime, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_datetime, __pyx_t_2) < 0) __PYX_ERR(0, 218, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_timedelta); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_timedelta, __pyx_t_2) < 0) __PYX_ERR(0, 218, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0219: from depths import DepthOffset
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_DepthOffset);
  __Pyx_GIVEREF(__pyx_n_s_DepthOffset);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_DepthOffset);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_depths, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_DepthOffset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DepthOffset, __pyx_t_1) < 0) __PYX_ERR(0, 219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0220: from glutils import gl, Texture
  __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_gl);
  __Pyx_GIVEREF(__pyx_n_s_gl);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_gl);
  __Pyx_INCREF(__pyx_n_s_Texture);
  __Pyx_GIVEREF(__pyx_n_s_Texture);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_Texture);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_glutils, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_gl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gl, __pyx_t_2) < 0) __PYX_ERR(0, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Texture); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Texture, __pyx_t_2) < 0) __PYX_ERR(0, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0221: from albow.resource import _2478aq_heot
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_2478aq_heot);
  __Pyx_GIVEREF(__pyx_n_s_2478aq_heot);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_2478aq_heot);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_albow_resource, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_2478aq_heot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_2478aq_heot, __pyx_t_1) < 0) __PYX_ERR(0, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0222: import logging
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_logging, 0, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logging, __pyx_t_2) < 0) __PYX_ERR(0, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0223: import numpy as numpy
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_2) < 0) __PYX_ERR(0, 223, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0224: cimport numpy as numpy
 0225: from cpython cimport PyTypeObject, PyList_Append
+0226: from OpenGL import GL
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_GL);
  __Pyx_GIVEREF(__pyx_n_s_GL);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_GL);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_OpenGL, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GL, __pyx_t_2) < 0) __PYX_ERR(0, 226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0227: import pymclevel
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_pymclevel, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pymclevel, __pyx_t_1) < 0) __PYX_ERR(0, 227, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0228: from pymclevel import MCEDIT_DEFS, MCEDIT_IDS
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_MCEDIT_DEFS);
  __Pyx_GIVEREF(__pyx_n_s_MCEDIT_DEFS);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_MCEDIT_DEFS);
  __Pyx_INCREF(__pyx_n_s_MCEDIT_IDS);
  __Pyx_GIVEREF(__pyx_n_s_MCEDIT_IDS);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_MCEDIT_IDS);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_pymclevel, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_MCEDIT_DEFS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MCEDIT_DEFS, __pyx_t_1) < 0) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_MCEDIT_IDS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MCEDIT_IDS, __pyx_t_1) < 0) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0229: from pymclevel.materials import alphaMaterials, pocketMaterials
  __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_alphaMaterials);
  __Pyx_GIVEREF(__pyx_n_s_alphaMaterials);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_alphaMaterials);
  __Pyx_INCREF(__pyx_n_s_pocketMaterials);
  __Pyx_GIVEREF(__pyx_n_s_pocketMaterials);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_pocketMaterials);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_pymclevel_materials, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_alphaMaterials, __pyx_t_2) < 0) __PYX_ERR(0, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_pocketMaterials); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pocketMaterials, __pyx_t_2) < 0) __PYX_ERR(0, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0230: import sys
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0231: from config import config
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_config);
  __Pyx_GIVEREF(__pyx_n_s_config);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_config);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_config, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_config, __pyx_t_1) < 0) __PYX_ERR(0, 231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0232: 
 0233: 
 0234: # import time
 0235: 
+0236: cdef chunkMarkers(chunkSet):
static PyObject *__pyx_f_9_renderer_chunkMarkers(PyObject *__pyx_v_chunkSet) {
  struct __pyx_obj_9_renderer___pyx_scope_struct____pyx_f_9_renderer_chunkMarkers *__pyx_cur_scope;
  int __pyx_v_nextsize;
  int __pyx_v_cx;
  int __pyx_v_cz;
  PyObject *__pyx_v_sizedChunks = 0;
  PyObject *__pyx_v_all4 = 0;
  PyObject *__pyx_v_append_ns = NULL;
  PyObject *__pyx_v_append_s = NULL;
  PyObject *__pyx_v_discard = NULL;
  PyObject *__pyx_v_add = NULL;
  PyObject *__pyx_v_o = NULL;
  PyObject *__pyx_v_others = NULL;
  PyObject *__pyx_v_c = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("chunkMarkers", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct____pyx_f_9_renderer_chunkMarkers *)__pyx_tp_new_9_renderer___pyx_scope_struct____pyx_f_9_renderer_chunkMarkers(__pyx_ptype_9_renderer___pyx_scope_struct____pyx_f_9_renderer_chunkMarkers, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return 0;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __Pyx_INCREF(__pyx_v_chunkSet);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("_renderer.chunkMarkers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sizedChunks);
  __Pyx_XDECREF(__pyx_v_all4);
  __Pyx_XDECREF(__pyx_v_append_ns);
  __Pyx_XDECREF(__pyx_v_append_s);
  __Pyx_XDECREF(__pyx_v_discard);
  __Pyx_XDECREF(__pyx_v_add);
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_others);
  __Pyx_XDECREF(__pyx_v_c);
  __Pyx_XDECREF(__pyx_v_chunkSet);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct____pyx_f_9_renderer_chunkMarkers {
  PyObject_HEAD
  int __pyx_v_size;
};

 0237:     """ Returns a mapping { size: [position, ...] } for different powers of 2
 0238:     as size.
 0239:     """
 0240: 
 0241:     cdef int size, nextsize, cx, cz
 0242:     cdef dict sizedChunks
 0243: 
+0244:     sizedChunks = defaultdict(list)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_defaultdict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)(&PyList_Type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(((PyObject *)(&PyList_Type)));
    __Pyx_GIVEREF(((PyObject *)(&PyList_Type)));
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)(&PyList_Type)));
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 244, __pyx_L1_error)
  __pyx_v_sizedChunks = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0245:     size = 1
  __pyx_cur_scope->__pyx_v_size = 1;
 0246: 
+0247:     def all4(cx, cz):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_12chunkMarkers_1all4(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_12chunkMarkers_1all4 = {"all4", (PyCFunction)__pyx_pw_9_renderer_12chunkMarkers_1all4, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_12chunkMarkers_1all4(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cx = 0;
  PyObject *__pyx_v_cz = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("all4 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cx,&__pyx_n_s_cz,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cx)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("all4", 1, 2, 2, 1); __PYX_ERR(0, 247, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "all4") < 0)) __PYX_ERR(0, 247, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cx = values[0];
    __pyx_v_cz = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("all4", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 247, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.chunkMarkers.all4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_12chunkMarkers_all4(__pyx_self, __pyx_v_cx, __pyx_v_cz);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_12chunkMarkers_all4(PyObject *__pyx_self, PyObject *__pyx_v_cx, PyObject *__pyx_v_cz) {
  struct __pyx_obj_9_renderer___pyx_scope_struct____pyx_f_9_renderer_chunkMarkers *__pyx_cur_scope;
  struct __pyx_obj_9_renderer___pyx_scope_struct____pyx_f_9_renderer_chunkMarkers *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("all4", 0);
  __pyx_outer_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct____pyx_f_9_renderer_chunkMarkers *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;
  __Pyx_INCREF(__pyx_v_cx);
  __Pyx_INCREF(__pyx_v_cz);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.chunkMarkers.all4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cx);
  __Pyx_XDECREF(__pyx_v_cz);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple_ = PyTuple_Pack(2, __pyx_n_s_cx, __pyx_n_s_cz); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);
/* … */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_12chunkMarkers_1all4, 0, __pyx_n_s_chunkMarkers_locals_all4, ((PyObject*)__pyx_cur_scope), __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_all4 = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_all4, 247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 247, __pyx_L1_error)
+0248:         cx &= ~size
  __pyx_t_1 = __Pyx_PyInt_From_int((~__pyx_cur_scope->__pyx_v_size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_InPlaceAnd(__pyx_v_cx, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_cx, __pyx_t_2);
  __pyx_t_2 = 0;
+0249:         cz &= ~size
  __pyx_t_2 = __Pyx_PyInt_From_int((~__pyx_cur_scope->__pyx_v_size)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyNumber_InPlaceAnd(__pyx_v_cz, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_cz, __pyx_t_1);
  __pyx_t_1 = 0;
+0250:         return [(cx, cz), (cx + size, cz), (cx + size, cz + size), (cx, cz + size)]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_cx);
  __Pyx_GIVEREF(__pyx_v_cx);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_cx);
  __Pyx_INCREF(__pyx_v_cz);
  __Pyx_GIVEREF(__pyx_v_cz);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_cz);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Add(__pyx_v_cx, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_cz);
  __Pyx_GIVEREF(__pyx_v_cz);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_cz);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Add(__pyx_v_cx, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyNumber_Add(__pyx_v_cz, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyNumber_Add(__pyx_v_cz, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_cx);
  __Pyx_GIVEREF(__pyx_v_cx);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_cx);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;
 0251: 
 0252:     # lastsize = 6
+0253:     size = 1
  __pyx_cur_scope->__pyx_v_size = 1;
+0254:     while 1:
  while (1) {
+0255:         nextsize = size << 1
    __pyx_v_nextsize = (__pyx_cur_scope->__pyx_v_size << 1);
+0256:         chunkSet = set(chunkSet)
    __pyx_t_1 = PySet_New(__pyx_v_chunkSet); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_chunkSet, __pyx_t_1);
    __pyx_t_1 = 0;
+0257:         append_ns = sizedChunks[nextsize].append
    if (unlikely(__pyx_v_sizedChunks == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 257, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nextsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_sizedChunks, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF_SET(__pyx_v_append_ns, __pyx_t_1);
    __pyx_t_1 = 0;
+0258:         append_s = sizedChunks[size].append
    if (unlikely(__pyx_v_sizedChunks == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 258, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_sizedChunks, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF_SET(__pyx_v_append_s, __pyx_t_1);
    __pyx_t_1 = 0;
+0259:         discard = chunkSet.discard
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunkSet, __pyx_n_s_discard); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_discard, __pyx_t_1);
    __pyx_t_1 = 0;
+0260:         add = chunkSet.add
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunkSet, __pyx_n_s_add); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_add, __pyx_t_1);
    __pyx_t_1 = 0;
+0261:         while len(chunkSet):
    while (1) {
      __pyx_t_5 = PyObject_Length(__pyx_v_chunkSet); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 261, __pyx_L1_error)
      __pyx_t_6 = (__pyx_t_5 != 0);
      if (!__pyx_t_6) break;
+0262:             cx, cz = chunkSet.pop()
      __pyx_t_1 = __Pyx_PyObject_Pop(__pyx_v_chunkSet); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
        PyObject* sequence = __pyx_t_1;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(0, 262, __pyx_L1_error)
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        #else
        __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 262, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext;
        index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_2);
        index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_3), 2) < 0) __PYX_ERR(0, 262, __pyx_L1_error)
        __pyx_t_7 = NULL;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        goto __pyx_L8_unpacking_done;
        __pyx_L7_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_7 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(0, 262, __pyx_L1_error)
        __pyx_L8_unpacking_done:;
      }
      __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 262, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 262, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_cx = __pyx_t_8;
      __pyx_v_cz = __pyx_t_9;
+0263:             add((cx, cz))
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_cx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_cz); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
      __pyx_t_4 = 0;
      __pyx_t_2 = 0;
      __Pyx_INCREF(__pyx_v_add);
      __pyx_t_2 = __pyx_v_add; __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 263, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0264:             o = all4(cx, cz)
      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_cx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_cz); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_10 = __pyx_pf_9_renderer_12chunkMarkers_all4(__pyx_v_all4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 264, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_o, __pyx_t_10);
      __pyx_t_10 = 0;
+0265:             others = set(o).intersection(chunkSet)
      __pyx_t_2 = PySet_New(__pyx_v_o); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_intersection); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_2) {
        __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_chunkSet); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
      } else {
        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_INCREF(__pyx_v_chunkSet);
        __Pyx_GIVEREF(__pyx_v_chunkSet);
        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_chunkSet);
        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF_SET(__pyx_v_others, __pyx_t_10);
      __pyx_t_10 = 0;
+0266:             if len(others) == 4:
      __pyx_t_5 = PyObject_Length(__pyx_v_others); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 266, __pyx_L1_error)
      __pyx_t_6 = ((__pyx_t_5 == 4) != 0);
      if (__pyx_t_6) {
/* … */
        goto __pyx_L9;
      }
+0267:                 append_ns(o[0])  # Possibly cache append?
        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_o, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_append_ns);
        __pyx_t_3 = __pyx_v_append_ns; __pyx_t_2 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_2)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        if (!__pyx_t_2) {
          __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 267, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_10);
        } else {
          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 267, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 267, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+0268:                 for c in others:
        if (likely(PyList_CheckExact(__pyx_v_others)) || PyTuple_CheckExact(__pyx_v_others)) {
          __pyx_t_10 = __pyx_v_others; __Pyx_INCREF(__pyx_t_10); __pyx_t_5 = 0;
          __pyx_t_11 = NULL;
        } else {
          __pyx_t_5 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_others); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 268, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 268, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_11)) {
            if (likely(PyList_CheckExact(__pyx_t_10))) {
              if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_10)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_3 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 268, __pyx_L1_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            } else {
              if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 268, __pyx_L1_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            }
          } else {
            __pyx_t_3 = __pyx_t_11(__pyx_t_10);
            if (unlikely(!__pyx_t_3)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(0, 268, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_XDECREF_SET(__pyx_v_c, __pyx_t_3);
          __pyx_t_3 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+0269:                     discard(c)
          __Pyx_INCREF(__pyx_v_discard);
          __pyx_t_4 = __pyx_v_discard; __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 269, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
          } else {
            __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_INCREF(__pyx_v_c);
            __Pyx_GIVEREF(__pyx_v_c);
            PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_c);
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 269, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 0270:             else:
+0271:                 for c in others:
      /*else*/ {
        if (likely(PyList_CheckExact(__pyx_v_others)) || PyTuple_CheckExact(__pyx_v_others)) {
          __pyx_t_10 = __pyx_v_others; __Pyx_INCREF(__pyx_t_10); __pyx_t_5 = 0;
          __pyx_t_11 = NULL;
        } else {
          __pyx_t_5 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_others); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 271, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 271, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_11)) {
            if (likely(PyList_CheckExact(__pyx_t_10))) {
              if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_10)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_3 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 271, __pyx_L1_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 271, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            } else {
              if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 271, __pyx_L1_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 271, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            }
          } else {
            __pyx_t_3 = __pyx_t_11(__pyx_t_10);
            if (unlikely(!__pyx_t_3)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(0, 271, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_XDECREF_SET(__pyx_v_c, __pyx_t_3);
          __pyx_t_3 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_L9:;
    }
+0272:                     append_s(c)  # Possibly cache append?
          __Pyx_INCREF(__pyx_v_append_s);
          __pyx_t_4 = __pyx_v_append_s; __pyx_t_2 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_2)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_2);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_2) {
            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
          } else {
            __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 272, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
            __Pyx_INCREF(__pyx_v_c);
            __Pyx_GIVEREF(__pyx_v_c);
            PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_c);
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0273:                     discard(c)
          __Pyx_INCREF(__pyx_v_discard);
          __pyx_t_4 = __pyx_v_discard; __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
          } else {
            __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 273, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_INCREF(__pyx_v_c);
            __Pyx_GIVEREF(__pyx_v_c);
            PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_c);
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 0274: 
+0275:         if len(sizedChunks[nextsize]):
    if (unlikely(__pyx_v_sizedChunks == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 275, __pyx_L1_error)
    }
    __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_nextsize); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_sizedChunks, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_5 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 275, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = (__pyx_t_5 != 0);
    if (__pyx_t_6) {
/* … */
      goto __pyx_L14;
    }
+0276:             chunkSet = set(sizedChunks[nextsize])
      if (unlikely(__pyx_v_sizedChunks == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 276, __pyx_L1_error)
      }
      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_nextsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = __Pyx_PyDict_GetItem(__pyx_v_sizedChunks, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 276, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PySet_New(__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF_SET(__pyx_v_chunkSet, __pyx_t_3);
      __pyx_t_3 = 0;
+0277:             sizedChunks[nextsize] = []
      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 277, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__pyx_v_sizedChunks == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 277, __pyx_L1_error)
      }
      __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_nextsize); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 277, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (unlikely(PyDict_SetItem(__pyx_v_sizedChunks, __pyx_t_10, __pyx_t_3) < 0)) __PYX_ERR(0, 277, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0278:             size <<= 1
      __pyx_cur_scope->__pyx_v_size = (__pyx_cur_scope->__pyx_v_size << 1);
 0279:         else:
+0280:             break
    /*else*/ {
      goto __pyx_L4_break;
    }
    __pyx_L14:;
  }
  __pyx_L4_break:;
+0281:     return sizedChunks
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_sizedChunks);
  __pyx_r = __pyx_v_sizedChunks;
  goto __pyx_L0;
 0282: 
 0283: 
+0284: cdef class ChunkRenderer(object):
struct __pyx_obj_9_renderer_ChunkRenderer {
  PyObject_HEAD
  struct __pyx_vtabstruct_9_renderer_ChunkRenderer *__pyx_vtab;
};
/* … */
struct __pyx_vtabstruct_9_renderer_ChunkRenderer {
  void (*forgetDisplayLists)(struct __pyx_obj_9_renderer_ChunkRenderer *, struct __pyx_opt_args_9_renderer_13ChunkRenderer_forgetDisplayLists *__pyx_optional_args);
  void (*makeDisplayLists)(struct __pyx_obj_9_renderer_ChunkRenderer *);
  void (*invalidate)(struct __pyx_obj_9_renderer_ChunkRenderer *, struct __pyx_opt_args_9_renderer_13ChunkRenderer_invalidate *__pyx_optional_args);
  void (*vertexArraysDone)(struct __pyx_obj_9_renderer_ChunkRenderer *);
};
static struct __pyx_vtabstruct_9_renderer_ChunkRenderer *__pyx_vtabptr_9_renderer_ChunkRenderer;
 0285:     #cdef int maxlod, minlod
+0286:     maxlod = 2
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9_renderer_ChunkRenderer->tp_dict, __pyx_n_s_maxlod, __pyx_int_2) < 0) __PYX_ERR(0, 286, __pyx_L1_error)
  PyType_Modified(__pyx_ptype_9_renderer_ChunkRenderer);
+0287:     minlod = 0
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9_renderer_ChunkRenderer->tp_dict, __pyx_n_s_minlod, __pyx_int_0) < 0) __PYX_ERR(0, 287, __pyx_L1_error)
  PyType_Modified(__pyx_ptype_9_renderer_ChunkRenderer);
 0288: 
+0289:     def __init__(self, renderer, chunkPosition):
/* Python wrapper */
static int __pyx_pw_9_renderer_13ChunkRenderer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9_renderer_13ChunkRenderer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_renderer = 0;
  PyObject *__pyx_v_chunkPosition = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_renderer_2,&__pyx_n_s_chunkPosition,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_renderer_2)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunkPosition)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 289, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 289, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_renderer = values[0];
    __pyx_v_chunkPosition = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 289, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkRenderer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_13ChunkRenderer___init__(((struct __pyx_obj_9_renderer_ChunkRenderer *)__pyx_v_self), __pyx_v_renderer, __pyx_v_chunkPosition);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9_renderer_13ChunkRenderer___init__(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self, PyObject *__pyx_v_renderer, PyObject *__pyx_v_chunkPosition) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.ChunkRenderer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0290:         cdef dict renderstateLists
 0291:         cdef int detailLevel, bufferSize
 0292:         cdef list blockRenderers
 0293:         cdef set invalidLayers
+0294:         self.renderer = renderer
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderer_2, __pyx_v_renderer) < 0) __PYX_ERR(0, 294, __pyx_L1_error)
+0295:         self.blockRenderers = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_blockRenderers, __pyx_t_1) < 0) __PYX_ERR(0, 295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0296:         self.detailLevel = 0
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_detailLevel, __pyx_int_0) < 0) __PYX_ERR(0, 296, __pyx_L1_error)
+0297:         self.invalidLayers = set(Layer.AllLayers)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_AllLayers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_invalidLayers, __pyx_t_2) < 0) __PYX_ERR(0, 297, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0298: 
+0299:         self.chunkPosition = chunkPosition
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_chunkPosition, __pyx_v_chunkPosition) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
+0300:         self.bufferSize = 0
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bufferSize, __pyx_int_0) < 0) __PYX_ERR(0, 300, __pyx_L1_error)
+0301:         self.renderstateLists = None
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderstateLists, Py_None) < 0) __PYX_ERR(0, 301, __pyx_L1_error)
 0302: 
 0303:     @property
+0304:     def visibleLayers(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_13visibleLayers_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_13visibleLayers_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13ChunkRenderer_13visibleLayers___get__(((struct __pyx_obj_9_renderer_ChunkRenderer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13ChunkRenderer_13visibleLayers___get__(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.ChunkRenderer.visibleLayers.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0305:         return self.renderer.visibleLayers
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_visibleLayers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;
 0306: 
+0307:     cdef void forgetDisplayLists(self, states=None):
static void __pyx_f_9_renderer_13ChunkRenderer_forgetDisplayLists(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self, struct __pyx_opt_args_9_renderer_13ChunkRenderer_forgetDisplayLists *__pyx_optional_args) {
  PyObject *__pyx_v_states = ((PyObject *)Py_None);
  PyTypeObject *__pyx_v_k = 0;
  PyObject *__pyx_v_a = 0;
  long __pyx_v_i;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("forgetDisplayLists", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_states = __pyx_optional_args->states;
    }
  }
/* … */
  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_WriteUnraisable("_renderer.ChunkRenderer.forgetDisplayLists", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_RefNannyFinishContext();
}
/* … */
struct __pyx_opt_args_9_renderer_13ChunkRenderer_forgetDisplayLists {
  int __pyx_n;
  PyObject *states;
};
 0308:         cdef type k
 0309:         cdef list a
 0310:         cdef long i
+0311:         if self.renderstateLists is not None:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderstateLists); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 != Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
  }
 0312:             # print "Discarded {0}, gained {1} bytes".format(self.chunkPosition,self.bufferSize)
+0313:             for k in self.renderstateLists.iterkeys():
    __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderstateLists); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (unlikely(__pyx_t_7 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iterkeys");
      __PYX_ERR(0, 313, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_dict_iterator(__pyx_t_7, 0, __pyx_n_s_iterkeys, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_8;
    __pyx_t_8 = 0;
    while (1) {
      __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_5, &__pyx_t_4, &__pyx_t_8, NULL, NULL, __pyx_t_6);
      if (unlikely(__pyx_t_9 == 0)) break;
      if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 313, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (!(likely(PyType_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "type", Py_TYPE(__pyx_t_8)->tp_name), 0))) __PYX_ERR(0, 313, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_k, ((PyTypeObject*)__pyx_t_8));
      __pyx_t_8 = 0;
+0314:                 a = self.renderstateLists.get(k, [])
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderstateLists); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 314, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_get); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 314, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 314, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_12 = 1;
        }
      }
      __pyx_t_13 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 314, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      if (__pyx_t_11) {
        __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL;
      }
      __Pyx_INCREF(((PyObject *)__pyx_v_k));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_k));
      PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, ((PyObject *)__pyx_v_k));
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 314, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (!(likely(PyList_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_8)->tp_name), 0))) __PYX_ERR(0, 314, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_a, ((PyObject*)__pyx_t_8));
      __pyx_t_8 = 0;
 0315:                 # print a
+0316:                 for i in a:
      if (unlikely(__pyx_v_a == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
        __PYX_ERR(0, 316, __pyx_L1_error)
      }
      __pyx_t_8 = __pyx_v_a; __Pyx_INCREF(__pyx_t_8); __pyx_t_12 = 0;
      for (;;) {
        if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_8)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_10 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_12); __Pyx_INCREF(__pyx_t_10); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 316, __pyx_L1_error)
        #else
        __pyx_t_10 = PySequence_ITEM(__pyx_t_8, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 316, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        #endif
        __pyx_t_14 = __Pyx_PyInt_As_long(__pyx_t_10); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 316, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_v_i = __pyx_t_14;
/* … */
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0317:                     gl.glDeleteLists(i, 1)
        __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 317, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_glDeleteLists); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 317, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_13 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 317, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_11 = NULL;
        __pyx_t_15 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_15 = 1;
          }
        }
        __pyx_t_16 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 317, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_16);
        if (__pyx_t_11) {
          __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_11); __pyx_t_11 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_13);
        PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_15, __pyx_t_13);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_15, __pyx_int_1);
        __pyx_t_13 = 0;
        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_16, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 317, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 0318: 
+0319:             if states:
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_states); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 319, __pyx_L1_error)
    if (__pyx_t_3) {
/* … */
      goto __pyx_L8;
    }
+0320:                 del self.renderstateLists[states]
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderstateLists); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_v_states) < 0)) __PYX_ERR(0, 320, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0321:             else:
+0322:                 self.renderstateLists = None
    /*else*/ {
      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderstateLists, Py_None) < 0) __PYX_ERR(0, 322, __pyx_L1_error)
    }
    __pyx_L8:;
 0323: 
+0324:             self.needsRedisplay = True
    if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_needsRedisplay, Py_True) < 0) __PYX_ERR(0, 324, __pyx_L1_error)
+0325:             self.renderer.discardMasterList()
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_discardMasterList); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_10, function);
      }
    }
    if (__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0326: 
+0327:     def debugDraw(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_3debugDraw(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_3debugDraw(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("debugDraw (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13ChunkRenderer_2debugDraw(((struct __pyx_obj_9_renderer_ChunkRenderer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13ChunkRenderer_2debugDraw(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self) {
  PyObject *__pyx_v_blockRenderer = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("debugDraw", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("_renderer.ChunkRenderer.debugDraw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_blockRenderer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0328:         print "test"
  if (__Pyx_PrintOne(0, __pyx_n_s_test) < 0) __PYX_ERR(0, 328, __pyx_L1_error)
+0329:         for blockRenderer in self.blockRenderers:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_blockRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 329, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 329, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 329, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_blockRenderer, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0330:             blockRenderer.drawArrays(self.chunkPosition, False)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_blockRenderer, __pyx_n_s_drawArrays); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_6);
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, Py_False);
    __pyx_t_6 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0331: 
+0332:     cdef void makeDisplayLists(self):
static void __pyx_f_9_renderer_13ChunkRenderer_makeDisplayLists(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self) {
  PyObject *__pyx_v_lists = 0;
  PyObject *__pyx_v_renderers = 0;
  long __pyx_v_l;
  PyObject *__pyx_v_showRedraw = NULL;
  PyObject *__pyx_v_blockRenderer = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeDisplayLists", 0);
/* … */
  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_WriteUnraisable("_renderer.ChunkRenderer.makeDisplayLists", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_lists);
  __Pyx_XDECREF(__pyx_v_renderers);
  __Pyx_XDECREF(__pyx_v_showRedraw);
  __Pyx_XDECREF(__pyx_v_blockRenderer);
  __Pyx_RefNannyFinishContext();
}
 0333:         cdef dict lists
 0334:         cdef list renderers
 0335:         cdef long l
+0336:         if not self.needsRedisplay:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_needsRedisplay); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 336, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {
/* … */
  }
+0337:             return
    goto __pyx_L0;
+0338:         self.forgetDisplayLists()
  ((struct __pyx_vtabstruct_9_renderer_ChunkRenderer *)__pyx_v_self->__pyx_vtab)->forgetDisplayLists(__pyx_v_self, NULL);
+0339:         if not self.blockRenderers:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_blockRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 339, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = ((!__pyx_t_3) != 0);
  if (__pyx_t_2) {
/* … */
  }
+0340:             return
    goto __pyx_L0;
 0341: 
+0342:         lists = defaultdict(list)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_defaultdict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)(&PyList_Type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_INCREF(((PyObject *)(&PyList_Type)));
    __Pyx_GIVEREF(((PyObject *)(&PyList_Type)));
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, ((PyObject *)(&PyList_Type)));
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 342, __pyx_L1_error)
  __pyx_v_lists = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 0343: 
+0344:         showRedraw = self.renderer.showRedraw
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_showRedraw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_showRedraw = __pyx_t_4;
  __pyx_t_4 = 0;
 0345: 
+0346:         if not (showRedraw and self.needsBlockRedraw):
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_showRedraw); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 346, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_needsBlockRedraw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_2 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {
/* … */
  }
+0347:             GL.glEnableClientState(GL.GL_COLOR_ARRAY)
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glEnableClientState); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_COLOR_ARRAY); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 347, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 0348: 
+0349:         renderers = self.blockRenderers
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_blockRenderers); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (!(likely(PyList_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 349, __pyx_L1_error)
  __pyx_v_renderers = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
 0350: 
+0351:         for blockRenderer in renderers:
  if (unlikely(__pyx_v_renderers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 351, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_v_renderers; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
  for (;;) {
    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 351, __pyx_L1_error)
    #else
    __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 351, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_blockRenderer, __pyx_t_6);
    __pyx_t_6 = 0;
/* … */
    __pyx_L8_continue:;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0352:             if self.detailLevel not in blockRenderer.detailLevels:
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_detailLevel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_blockRenderer, __pyx_n_s_detailLevels); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_t_7, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 352, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = (__pyx_t_3 != 0);
    if (__pyx_t_2) {
/* … */
    }
+0353:                 continue
      goto __pyx_L8_continue;
+0354:             if blockRenderer.layer not in self.visibleLayers:
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_blockRenderer, __pyx_n_s_layer); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_visibleLayers); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_6, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 354, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_3 = (__pyx_t_2 != 0);
    if (__pyx_t_3) {
/* … */
    }
+0355:                 continue
      goto __pyx_L8_continue;
 0356: 
+0357:             l = blockRenderer.makeArrayList(self.chunkPosition, self.needsBlockRedraw and showRedraw)
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_blockRenderer, __pyx_n_s_makeArrayList); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_needsBlockRedraw); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 357, __pyx_L1_error)
    if (__pyx_t_3) {
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    } else {
      __Pyx_INCREF(__pyx_t_9);
      __pyx_t_1 = __pyx_t_9;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L12_bool_binop_done;
    }
    __Pyx_INCREF(__pyx_v_showRedraw);
    __pyx_t_1 = __pyx_v_showRedraw;
    __pyx_L12_bool_binop_done:;
    __pyx_t_9 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    if (__pyx_t_9) {
      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_12 = __Pyx_PyInt_As_long(__pyx_t_6); if (unlikely((__pyx_t_12 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 357, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_l = __pyx_t_12;
+0358:             lists[blockRenderer.renderstate].append(l)
    if (unlikely(__pyx_v_lists == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 358, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_blockRenderer, __pyx_n_s_renderstate); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_lists, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyInt_From_long(__pyx_v_l); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_13 = __Pyx_PyObject_Append(__pyx_t_7, __pyx_t_6); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 358, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 0359: 
+0360:         if not (showRedraw and self.needsBlockRedraw):
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_showRedraw); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 360, __pyx_L1_error)
  if (__pyx_t_2) {
  } else {
    __pyx_t_3 = __pyx_t_2;
    goto __pyx_L15_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_needsBlockRedraw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = __pyx_t_2;
  __pyx_L15_bool_binop_done:;
  __pyx_t_2 = ((!__pyx_t_3) != 0);
  if (__pyx_t_2) {
/* … */
  }
+0361:             GL.glDisableClientState(GL.GL_COLOR_ARRAY)
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glDisableClientState); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_COLOR_ARRAY); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_11);
      __pyx_t_11 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 0362: 
+0363:         self.needsRedisplay = False
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_needsRedisplay, Py_False) < 0) __PYX_ERR(0, 363, __pyx_L1_error)
+0364:         self.renderstateLists = lists
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderstateLists, __pyx_v_lists) < 0) __PYX_ERR(0, 364, __pyx_L1_error)
 0365: 
 0366:     @property
+0367:     def needsBlockRedraw(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_16needsBlockRedraw_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_16needsBlockRedraw_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13ChunkRenderer_16needsBlockRedraw___get__(((struct __pyx_obj_9_renderer_ChunkRenderer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13ChunkRenderer_16needsBlockRedraw___get__(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.ChunkRenderer.needsBlockRedraw.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0368:         return Layer.Blocks in self.invalidLayers
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Blocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_invalidLayers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 368, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;
 0369: 
+0370:     cdef void invalidate(self, list layers=None):
static void __pyx_f_9_renderer_13ChunkRenderer_invalidate(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self, struct __pyx_opt_args_9_renderer_13ChunkRenderer_invalidate *__pyx_optional_args) {
  PyObject *__pyx_v_layers = ((PyObject*)Py_None);
  PyObject *__pyx_v_blockRenderers = 0;
  PyObject *__pyx_v_br = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidate", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_layers = __pyx_optional_args->layers;
    }
  }
  __Pyx_INCREF(__pyx_v_layers);
/* … */
  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("_renderer.ChunkRenderer.invalidate", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_blockRenderers);
  __Pyx_XDECREF(__pyx_v_br);
  __Pyx_XDECREF(__pyx_v_layers);
  __Pyx_RefNannyFinishContext();
}
static PyObject *__pyx_gb_9_renderer_13ChunkRenderer_6generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
struct __pyx_opt_args_9_renderer_13ChunkRenderer_invalidate {
  int __pyx_n;
  PyObject *layers;
};
 0371:         cdef set layer
 0372:         cdef list blockRenderers
+0373:         if layers is None:
  __pyx_t_1 = (__pyx_v_layers == ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
  }
+0374:             layers = Layer.AllLayers
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_AllLayers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(PyList_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 374, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_layers, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;
 0375: 
+0376:         if layers:
  __pyx_t_2 = (__pyx_v_layers != Py_None) && (PyList_GET_SIZE(__pyx_v_layers) != 0);
  if (__pyx_t_2) {
/* … */
  }
+0377:             layers = set(layers)
    __pyx_t_3 = PySet_New(__pyx_v_layers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(PyList_CheckExact(__pyx_t_3))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 377, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_layers, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;
+0378:             self.invalidLayers.update(layers)
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_invalidLayers); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_layers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 378, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 378, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_v_layers);
      __Pyx_GIVEREF(__pyx_v_layers);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_layers);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 378, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0379:             blockRenderers = [br for br in self.blockRenderers
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_blockRenderers); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
      __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 379, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_6))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_6)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 379, __pyx_L1_error)
          #else
          __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 379, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 379, __pyx_L1_error)
          #else
          __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 379, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
        }
      } else {
        __pyx_t_5 = __pyx_t_8(__pyx_t_6);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 379, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_XDECREF_SET(__pyx_v_br, __pyx_t_5);
      __pyx_t_5 = 0;
/* … */
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_v_br))) __PYX_ERR(0, 379, __pyx_L1_error)
/* … */
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_blockRenderers = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;
+0380:                               if br.layer is Layer.Blocks
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_br, __pyx_n_s_layer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Blocks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = (__pyx_t_5 == __pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_9 = (__pyx_t_1 != 0);
      if (!__pyx_t_9) {
      } else {
        __pyx_t_2 = __pyx_t_9;
        goto __pyx_L8_bool_binop_done;
      }
/* … */
      if (__pyx_t_2) {
/* … */
      }
+0381:                               or br.layer not in layers]
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_br, __pyx_n_s_layer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_v_layers, Py_NE)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 381, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__pyx_t_9 != 0);
      __pyx_t_2 = __pyx_t_1;
      __pyx_L8_bool_binop_done:;
+0382:             if len(blockRenderers) < len(self.blockRenderers):
    __pyx_t_7 = PyList_GET_SIZE(__pyx_v_blockRenderers); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 382, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_blockRenderers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 382, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = ((__pyx_t_7 < __pyx_t_10) != 0);
    if (__pyx_t_2) {
/* … */
    }
+0383:                 self.forgetDisplayLists()
      ((struct __pyx_vtabstruct_9_renderer_ChunkRenderer *)__pyx_v_self->__pyx_vtab)->forgetDisplayLists(__pyx_v_self, NULL);
+0384:             self.blockRenderers = blockRenderers
    if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_blockRenderers, __pyx_v_blockRenderers) < 0) __PYX_ERR(0, 384, __pyx_L1_error)
 0385: 
+0386:             if self.renderer.showRedraw and Layer.Blocks in layers:
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_showRedraw); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 386, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L12_bool_binop_done;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Blocks); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_layers, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 386, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_9 = (__pyx_t_1 != 0);
    __pyx_t_2 = __pyx_t_9;
    __pyx_L12_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
+0387:                 self.needsRedisplay = True
      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_needsRedisplay, Py_True) < 0) __PYX_ERR(0, 387, __pyx_L1_error)
 0388: 
+0389:     def calcFaces(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_5calcFaces(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_5calcFaces(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcFaces (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13ChunkRenderer_4calcFaces(((struct __pyx_obj_9_renderer_ChunkRenderer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13ChunkRenderer_4calcFaces(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_1_calcFaces *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcFaces", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_1_calcFaces *)__pyx_tp_new_9_renderer___pyx_scope_struct_1_calcFaces(__pyx_ptype_9_renderer___pyx_scope_struct_1_calcFaces, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_13ChunkRenderer_6generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_calcFaces, __pyx_n_s_ChunkRenderer_calcFaces, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 389, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.ChunkRenderer.calcFaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_13ChunkRenderer_6generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 389, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("calcFaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_1_calcFaces {
  PyObject_HEAD
  PyObject *__pyx_v__;
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_blockRenderers;
  PyObject *__pyx_v_br;
  int __pyx_v_minlod;
  struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

 0390:         cdef int minlod
 0391:         cdef list blockRenderers
+0392:         minlod = self.renderer.detailLevelForChunk(self.chunkPosition)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_detailLevelForChunk); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_cur_scope->__pyx_v_minlod = __pyx_t_6;
 0393: 
+0394:         minlod = min(minlod, self.maxlod)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_maxlod); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __pyx_cur_scope->__pyx_v_minlod;
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 394, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 394, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_7) {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 394, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_cur_scope->__pyx_v_minlod = __pyx_t_6;
+0395:         if self.detailLevel != minlod:
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_detailLevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_minlod); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 395, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 395, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_7) {
/* … */
  }
+0396:             self.forgetDisplayLists()
    ((struct __pyx_vtabstruct_9_renderer_ChunkRenderer *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->forgetDisplayLists(__pyx_cur_scope->__pyx_v_self, NULL);
+0397:             self.detailLevel = minlod
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_minlod); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_detailLevel, __pyx_t_2) < 0) __PYX_ERR(0, 397, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0398:             self.invalidLayers.add(Layer.Blocks)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_invalidLayers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_add); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Blocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 398, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 398, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 398, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0399: 
 0400:             # discard the standard detail renderers
+0401:             if minlod > 0:
    __pyx_t_7 = ((__pyx_cur_scope->__pyx_v_minlod > 0) != 0);
    if (__pyx_t_7) {
/* … */
    }
+0402:                 blockRenderers = []
      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 402, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_blockRenderers = ((PyObject*)__pyx_t_2);
      __pyx_t_2 = 0;
+0403:                 append = blockRenderers.append
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockRenderers, __pyx_n_s_append); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 403, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_append = __pyx_t_2;
      __pyx_t_2 = 0;
+0404:                 for br in self.blockRenderers:
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_blockRenderers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 404, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
      } else {
        __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 404, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 404, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_9)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 404, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 404, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 404, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 404, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_9(__pyx_t_3);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(0, 404, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_br);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_br, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;
/* … */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0405:                     if br.detailLevels != (0,):
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_br, __pyx_n_s_detailLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 405, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_tuple__3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 405, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 405, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (__pyx_t_7) {
/* … */
        }
/* … */
  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__3);
  __Pyx_GIVEREF(__pyx_tuple__3);
+0406:                         append(br)
          __pyx_t_10 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_blockRenderers, __pyx_cur_scope->__pyx_v_br); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 406, __pyx_L1_error)
 0407: 
+0408:                 self.blockRenderers = blockRenderers
      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_blockRenderers, __pyx_cur_scope->__pyx_v_blockRenderers) < 0) __PYX_ERR(0, 408, __pyx_L1_error)
 0409: 
+0410:         if self.renderer.chunkCalculator:
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_chunkCalculator); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 410, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_7) {
/* … */
    goto __pyx_L9;
  }
+0411:             for _ in self.renderer.chunkCalculator.calcFacesForChunkRenderer(self):
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_chunkCalculator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_calcFacesForChunkRenderer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 411, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_9)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 411, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 411, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_9(__pyx_t_3);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 411, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0412:                 yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_t_3);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_8;
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_9;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L12_resume_from_yield:;
      __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_3);
      __pyx_t_8 = __pyx_cur_scope->__pyx_t_1;
      __pyx_t_9 = __pyx_cur_scope->__pyx_t_2;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 412, __pyx_L1_error)
 0413: 
 0414:         else:
+0415:             raise StopIteration
  /*else*/ {
    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
    __PYX_ERR(0, 415, __pyx_L1_error)
  }
  __pyx_L9:;
 0416: 
+0417:     cdef void vertexArraysDone(self):
static void __pyx_f_9_renderer_13ChunkRenderer_vertexArraysDone(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self) {
  PyObject *__pyx_v_bufferSize = NULL;
  PyObject *__pyx_v_br = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vertexArraysDone", 0);
/* … */
  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("_renderer.ChunkRenderer.vertexArraysDone", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bufferSize);
  __Pyx_XDECREF(__pyx_v_br);
  __Pyx_RefNannyFinishContext();
}
+0418:         bufferSize = 0
  __Pyx_INCREF(__pyx_int_0);
  __pyx_v_bufferSize = __pyx_int_0;
+0419:         for br in self.blockRenderers:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_blockRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 419, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 419, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 419, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 419, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_br, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0420:             bufferSize += br.bufferSize()
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_br, __pyx_n_s_bufferSize); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_6) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_bufferSize, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_bufferSize, __pyx_t_5);
    __pyx_t_5 = 0;
+0421:             if self.renderer.alpha != 0xff:
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_alpha); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_255, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 421, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 421, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_7) {
/* … */
    }
+0422:                 br.setAlpha(self.renderer.alpha)
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_br, __pyx_n_s_setAlpha); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_alpha); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 422, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_5);
      } else {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 422, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 422, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0423:         self.bufferSize = bufferSize
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bufferSize, __pyx_v_bufferSize) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
+0424:         self.invalidLayers = set()
  __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_invalidLayers, __pyx_t_2) < 0) __PYX_ERR(0, 424, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0425:         self.needsRedisplay = True
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_needsRedisplay, Py_True) < 0) __PYX_ERR(0, 425, __pyx_L1_error)
+0426:         self.renderer.invalidateMasterList()
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_invalidateMasterList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0427: 
+0428:     needsRedisplay = False
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9_renderer_ChunkRenderer->tp_dict, __pyx_n_s_needsRedisplay, Py_False) < 0) __PYX_ERR(0, 428, __pyx_L1_error)
  PyType_Modified(__pyx_ptype_9_renderer_ChunkRenderer);
 0429: 
 0430:     @property
+0431:     def done(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_4done_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9_renderer_13ChunkRenderer_4done_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13ChunkRenderer_4done___get__(((struct __pyx_obj_9_renderer_ChunkRenderer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13ChunkRenderer_4done___get__(struct __pyx_obj_9_renderer_ChunkRenderer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.ChunkRenderer.done.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0432:         return not self.invalidLayers
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_invalidLayers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 432, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong((!__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 0433: 
 0434: 
+0435: _XYZ = numpy.s_[..., 0:3]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__590 = PySlice_New(__pyx_int_0, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__590)) __PYX_ERR(0, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__590);
  __Pyx_GIVEREF(__pyx_slice__590);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_tuple__591); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XYZ, __pyx_t_2) < 0) __PYX_ERR(0, 435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__591 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__590); if (unlikely(!__pyx_tuple__591)) __PYX_ERR(0, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__591);
  __Pyx_GIVEREF(__pyx_tuple__591);
+0436: _ST = numpy.s_[..., 3:5]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__592 = PySlice_New(__pyx_int_3, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__592)) __PYX_ERR(0, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__592);
  __Pyx_GIVEREF(__pyx_slice__592);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_tuple__593); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ST, __pyx_t_2) < 0) __PYX_ERR(0, 436, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__593 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__592); if (unlikely(!__pyx_tuple__593)) __PYX_ERR(0, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__593);
  __Pyx_GIVEREF(__pyx_tuple__593);
+0437: _XYZST = numpy.s_[..., :5]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__594 = PySlice_New(Py_None, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__594)) __PYX_ERR(0, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__594);
  __Pyx_GIVEREF(__pyx_slice__594);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_tuple__595); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XYZST, __pyx_t_2) < 0) __PYX_ERR(0, 437, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__595 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__594); if (unlikely(!__pyx_tuple__595)) __PYX_ERR(0, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__595);
  __Pyx_GIVEREF(__pyx_tuple__595);
+0438: _RGBA = numpy.s_[..., 20:24]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__596 = PySlice_New(__pyx_int_20, __pyx_int_24, Py_None); if (unlikely(!__pyx_slice__596)) __PYX_ERR(0, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__596);
  __Pyx_GIVEREF(__pyx_slice__596);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_tuple__597); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RGBA, __pyx_t_2) < 0) __PYX_ERR(0, 438, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__597 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__596); if (unlikely(!__pyx_tuple__597)) __PYX_ERR(0, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__597);
  __Pyx_GIVEREF(__pyx_tuple__597);
+0439: _RGB = numpy.s_[..., 20:23]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__598 = PySlice_New(__pyx_int_20, __pyx_int_23, Py_None); if (unlikely(!__pyx_slice__598)) __PYX_ERR(0, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__598);
  __Pyx_GIVEREF(__pyx_slice__598);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_tuple__599); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RGB, __pyx_t_2) < 0) __PYX_ERR(0, 439, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__599 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__598); if (unlikely(!__pyx_tuple__599)) __PYX_ERR(0, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__599);
  __Pyx_GIVEREF(__pyx_tuple__599);
+0440: _A = numpy.s_[..., 23]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_tuple__600); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_A, __pyx_t_2) < 0) __PYX_ERR(0, 440, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__600 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_23); if (unlikely(!__pyx_tuple__600)) __PYX_ERR(0, 440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__600);
  __Pyx_GIVEREF(__pyx_tuple__600);
 0441: 
+0442: cdef numpy.ndarray[numpy.float64_t, ndim=3] makeVertexTemplatesFromJsonModel(fromVertices, toVertices, uv):
static PyArrayObject *__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(PyObject *__pyx_v_fromVertices, PyObject *__pyx_v_toVertices, PyObject *__pyx_v_uv) {
  PyObject *__pyx_v_xmin = NULL;
  PyObject *__pyx_v_xmax = NULL;
  PyObject *__pyx_v_ymin = NULL;
  PyObject *__pyx_v_ymax = NULL;
  PyObject *__pyx_v_zmin = NULL;
  PyObject *__pyx_v_zmax = NULL;
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVertexTemplatesFromJsonModel", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("_renderer.makeVertexTemplatesFromJsonModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_xmin);
  __Pyx_XDECREF(__pyx_v_xmax);
  __Pyx_XDECREF(__pyx_v_ymin);
  __Pyx_XDECREF(__pyx_v_ymax);
  __Pyx_XDECREF(__pyx_v_zmin);
  __Pyx_XDECREF(__pyx_v_zmax);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0443:     """
 0444:     This is similar to makeVertexTemplates but is a more convenient
 0445:     when reading off of the json model files.
 0446:     :param fromVertices: from
 0447:     :param toVertices:   to
 0448:     :param uv:           keywords uv map
 0449:     :return:             template for a cube
 0450:     """
+0451:     xmin = fromVertices[0] / 16.
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fromVertices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyFloat_DivideObjC(__pyx_t_1, __pyx_float_16_, 16., 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_xmin = __pyx_t_2;
  __pyx_t_2 = 0;
+0452:     xmax = toVertices[0] / 16.
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_toVertices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyFloat_DivideObjC(__pyx_t_2, __pyx_float_16_, 16., 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_xmax = __pyx_t_1;
  __pyx_t_1 = 0;
+0453:     ymin = fromVertices[1] / 16.
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fromVertices, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyFloat_DivideObjC(__pyx_t_1, __pyx_float_16_, 16., 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ymin = __pyx_t_2;
  __pyx_t_2 = 0;
+0454:     ymax = toVertices[1] / 16.
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_toVertices, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyFloat_DivideObjC(__pyx_t_2, __pyx_float_16_, 16., 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_ymax = __pyx_t_1;
  __pyx_t_1 = 0;
+0455:     zmin = fromVertices[2] / 16.
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fromVertices, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyFloat_DivideObjC(__pyx_t_1, __pyx_float_16_, 16., 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_zmin = __pyx_t_2;
  __pyx_t_2 = 0;
+0456:     zmax = toVertices[2] / 16.
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_toVertices, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyFloat_DivideObjC(__pyx_t_2, __pyx_float_16_, 16., 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_zmax = __pyx_t_1;
  __pyx_t_1 = 0;
 0457: 
+0458:     return numpy.array([
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_t_13);
  __pyx_t_8 = 0;
  __pyx_t_9 = 0;
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
  __pyx_t_13 = 0;
  __pyx_t_13 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_13)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_13);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_13) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 458, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;
 0459:         # FaceXIncreasing:
+0460:         [[xmax, ymin, zmax, uv["east"][0], uv["east"][3], 0x0b],
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_east); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_east); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_11);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
/* … */
  __pyx_t_8 = PyList_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_8, 3, __pyx_t_7);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
+0461:          [xmax, ymin, zmin, uv["east"][2], uv["east"][3], 0x0b],
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_east); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_east); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_11);
  __pyx_t_4 = 0;
  __pyx_t_6 = 0;
+0462:          [xmax, ymax, zmin, uv["east"][2], uv["east"][1], 0x0b],
  __pyx_t_6 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_east); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_east); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_11);
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
+0463:          [xmax, ymax, zmax, uv["east"][0], uv["east"][1], 0x0b],
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_east); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_east); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyList_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_7, 4, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_7, 5, __pyx_int_11);
  __pyx_t_4 = 0;
  __pyx_t_8 = 0;
 0464:          ],
 0465: 
 0466:         # FaceXDecreasing:
+0467:         [[xmin, ymin, zmin, uv["west"][0], uv["west"][3], 0x0b],
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_west); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_west); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyList_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_7, 4, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_7, 5, __pyx_int_11);
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
/* … */
  __pyx_t_9 = PyList_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_9, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_9, 2, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_9, 3, __pyx_t_4);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
+0468:          [xmin, ymin, zmax, uv["west"][2], uv["west"][3], 0x0b],
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_west); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_west); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_5, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_11);
  __pyx_t_6 = 0;
  __pyx_t_2 = 0;
+0469:          [xmin, ymax, zmax, uv["west"][2], uv["west"][1], 0x0b],
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_west); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_west); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_4);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_11);
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
+0470:          [xmin, ymax, zmin, uv["west"][0], uv["west"][1], 0x0b]],
  __pyx_t_4 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_west); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_west); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_9);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_9);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_11);
  __pyx_t_6 = 0;
  __pyx_t_9 = 0;
 0471: 
 0472:         # FaceYIncreasing:
+0473:         [[xmin, ymax, zmin, uv["up"][0], uv["up"][1], 0x11],  # ne
  __pyx_t_4 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_up); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_up); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_17);
  __Pyx_GIVEREF(__pyx_int_17);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_17);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
/* … */
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_10, 2, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_10, 3, __pyx_t_6);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
+0474:          [xmin, ymax, zmax, uv["up"][0], uv["up"][3], 0x11],  # nw
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_up); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_up); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_17);
  __Pyx_GIVEREF(__pyx_int_17);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_17);
  __pyx_t_2 = 0;
  __pyx_t_7 = 0;
+0475:          [xmax, ymax, zmax, uv["up"][2], uv["up"][3], 0x11],  # sw
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_up); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_up); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyList_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_7, 4, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_17);
  __Pyx_GIVEREF(__pyx_int_17);
  PyList_SET_ITEM(__pyx_t_7, 5, __pyx_int_17);
  __pyx_t_2 = 0;
  __pyx_t_6 = 0;
+0476:          [xmax, ymax, zmin, uv["up"][2], uv["up"][1], 0x11]],  # se
  __pyx_t_6 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_up); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_6, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_up); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_10);
  __Pyx_INCREF(__pyx_int_17);
  __Pyx_GIVEREF(__pyx_int_17);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_17);
  __pyx_t_2 = 0;
  __pyx_t_10 = 0;
 0477: 
 0478:         # FaceYDecreasing:
+0479:         [[xmin, ymin, zmin, uv["down"][0], uv["down"][3], 0x08],
  __pyx_t_6 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_down); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_down); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_8);
  __Pyx_GIVEREF(__pyx_int_8);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_8);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
/* … */
  __pyx_t_11 = PyList_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_11, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_11, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_11, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_11, 3, __pyx_t_2);
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
  __pyx_t_4 = 0;
  __pyx_t_2 = 0;
+0480:          [xmax, ymin, zmin, uv["down"][2], uv["down"][3], 0x08],
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_down); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_down); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_4);
  __Pyx_INCREF(__pyx_int_8);
  __Pyx_GIVEREF(__pyx_int_8);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_8);
  __pyx_t_7 = 0;
  __pyx_t_4 = 0;
+0481:          [xmax, ymin, zmax, uv["down"][2], uv["down"][1], 0x08],
  __pyx_t_4 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_down); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_down); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_8);
  __Pyx_GIVEREF(__pyx_int_8);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_8);
  __pyx_t_7 = 0;
  __pyx_t_2 = 0;
+0482:          [xmin, ymin, zmax, uv["down"][0], uv["down"][1], 0x08]],
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_down); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_down); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_11);
  __Pyx_INCREF(__pyx_int_8);
  __Pyx_GIVEREF(__pyx_int_8);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_8);
  __pyx_t_7 = 0;
  __pyx_t_11 = 0;
 0483: 
 0484:         # FaceZIncreasing:
+0485:         [[xmin, ymin, zmax, uv["south"][0], uv["south"][3], 0x0d],
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_south); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_south); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_13);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
/* … */
  __pyx_t_12 = PyList_New(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_12, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_12, 3, __pyx_t_7);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
+0486:          [xmax, ymin, zmax, uv["south"][2], uv["south"][3], 0x0d],
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_south); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_south); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_13);
  __pyx_t_4 = 0;
  __pyx_t_6 = 0;
+0487:          [xmax, ymax, zmax, uv["south"][2], uv["south"][1], 0x0d],
  __pyx_t_6 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_south); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_south); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_13);
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
+0488:          [xmin, ymax, zmax, uv["south"][0], uv["south"][1], 0x0d]],
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_south); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_south); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyList_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_7, 4, __pyx_t_12);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_7, 5, __pyx_int_13);
  __pyx_t_4 = 0;
  __pyx_t_12 = 0;
 0489: 
 0490:         # FaceZDecreasing:
+0491:         [[xmax, ymin, zmin, uv["north"][0], uv["north"][3], 0x0d],
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_north); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_north); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyList_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_7, 4, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_7, 5, __pyx_int_13);
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
/* … */
  __pyx_t_13 = PyList_New(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_13, 2, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_13, 3, __pyx_t_4);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
+0492:          [xmin, ymin, zmin, uv["north"][2], uv["north"][3], 0x0d],
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_north); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_north); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_5, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_13);
  __pyx_t_6 = 0;
  __pyx_t_2 = 0;
+0493:          [xmin, ymax, zmin, uv["north"][2], uv["north"][1], 0x0d],
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_north); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_north); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_4);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_13);
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
+0494:          [xmax, ymax, zmin, uv["north"][0], uv["north"][1], 0x0d],
  __pyx_t_4 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_north); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_v_uv, __pyx_n_s_north); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_13 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_13);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_13);
  __pyx_t_6 = 0;
  __pyx_t_13 = 0;
 0495:          ],
 0496: 
 0497:     ])
 0498: 
 0499: 
+0500: cdef numpy.ndarray[numpy.float64_t, ndim=3] rotateTemplate(numpy.ndarray[numpy.float64_t, ndim=3] template, int x=0, int y=0):
static PyArrayObject *__pyx_f_9_renderer_rotateTemplate(PyArrayObject *__pyx_v_template, struct __pyx_opt_args_9_renderer_rotateTemplate *__pyx_optional_args) {
  int __pyx_v_x = ((int)0);
  int __pyx_v_y = ((int)0);
  CYTHON_UNUSED long __pyx_v__;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_template;
  __Pyx_Buffer __pyx_pybuffer_template;
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rotateTemplate", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_x = __pyx_optional_args->x;
      if (__pyx_optional_args->__pyx_n > 1) {
        __pyx_v_y = __pyx_optional_args->y;
      }
    }
  }
  __Pyx_INCREF((PyObject *)__pyx_v_template);
  __pyx_pybuffer_template.pybuffer.buf = NULL;
  __pyx_pybuffer_template.refcount = 0;
  __pyx_pybuffernd_template.data = NULL;
  __pyx_pybuffernd_template.rcbuffer = &__pyx_pybuffer_template;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_template.rcbuffer->pybuffer, (PyObject*)__pyx_v_template, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) __PYX_ERR(0, 500, __pyx_L1_error)
  }
  __pyx_pybuffernd_template.diminfo[0].strides = __pyx_pybuffernd_template.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_template.diminfo[0].shape = __pyx_pybuffernd_template.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_template.diminfo[1].strides = __pyx_pybuffernd_template.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_template.diminfo[1].shape = __pyx_pybuffernd_template.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_template.diminfo[2].strides = __pyx_pybuffernd_template.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_template.diminfo[2].shape = __pyx_pybuffernd_template.rcbuffer->pybuffer.shape[2];
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_10);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_template.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("_renderer.rotateTemplate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_template.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_template);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9_renderer_rotateTemplate {
  int __pyx_n;
  int x;
  int y;
};
 0501:     """
 0502:     Rotate template around x-axis and then around
 0503:     y-axis. Both angles must to multiples of 90.
 0504:     TODO: Add ability for multiples of 45
 0505:     """
+0506:     template = template.copy()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_template), __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 506, __pyx_L1_error)
  __pyx_t_4 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_template.rcbuffer->pybuffer);
    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_template.rcbuffer->pybuffer, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack);
    if (unlikely(__pyx_t_5 < 0)) {
      PyErr_Fetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_template.rcbuffer->pybuffer, (PyObject*)__pyx_v_template, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      }
    }
    __pyx_pybuffernd_template.diminfo[0].strides = __pyx_pybuffernd_template.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_template.diminfo[0].shape = __pyx_pybuffernd_template.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_template.diminfo[1].strides = __pyx_pybuffernd_template.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_template.diminfo[1].shape = __pyx_pybuffernd_template.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_template.diminfo[2].strides = __pyx_pybuffernd_template.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_template.diminfo[2].shape = __pyx_pybuffernd_template.rcbuffer->pybuffer.shape[2];
    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 506, __pyx_L1_error)
  }
  __pyx_t_4 = 0;
  __Pyx_DECREF_SET(__pyx_v_template, ((PyArrayObject *)__pyx_t_1));
  __pyx_t_1 = 0;
+0507:     for _ in xrange(0, x, 90):
  __pyx_t_5 = __pyx_v_x;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_5; __pyx_t_9+=90) {
    __pyx_v__ = __pyx_t_9;
 0508:         # y -> -z and z -> y
+0509:         template[..., (1, 2)] = template[..., (2, 1)]
  __pyx_tuple__4 = PyTuple_Pack(2, __pyx_int_2, __pyx_int_1); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);
/* … */
    __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_template), __pyx_tuple__5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  __pyx_tuple__5 = PyTuple_Pack(2, Py_Ellipsis, __pyx_tuple__4); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__5);
  __Pyx_GIVEREF(__pyx_tuple__5);
  __pyx_tuple__6 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_2); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__6);
  __Pyx_GIVEREF(__pyx_tuple__6);
    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_template), __pyx_tuple__7, __pyx_t_1) < 0)) __PYX_ERR(0, 509, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__7 = PyTuple_Pack(2, Py_Ellipsis, __pyx_tuple__6); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__7);
  __Pyx_GIVEREF(__pyx_tuple__7);
+0510:         template[..., 2] -= 0.5
    __Pyx_INCREF(__pyx_tuple__8);
    __pyx_t_10 = __pyx_tuple__8;
    __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_template), __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyFloat_SubtractObjC(__pyx_t_1, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 510, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_template), __pyx_t_10, __pyx_t_2) < 0)) __PYX_ERR(0, 510, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_tuple__8 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__8);
  __Pyx_GIVEREF(__pyx_tuple__8);
+0511:         template[..., 2] *= -1
    __Pyx_INCREF(__pyx_tuple__9);
    __pyx_t_10 = __pyx_tuple__9;
    __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_template), __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_template), __pyx_t_10, __pyx_t_1) < 0)) __PYX_ERR(0, 511, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_tuple__9 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__9);
  __Pyx_GIVEREF(__pyx_tuple__9);
+0512:         template[..., 2] += 0.5
    __Pyx_INCREF(__pyx_tuple__10);
    __pyx_t_10 = __pyx_tuple__10;
    __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_template), __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyFloat_AddObjC(__pyx_t_1, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_template), __pyx_t_10, __pyx_t_2) < 0)) __PYX_ERR(0, 512, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
/* … */
  __pyx_tuple__10 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__10);
  __Pyx_GIVEREF(__pyx_tuple__10);
 0513: 
+0514:     for _ in xrange(0, y, 90):
  __pyx_t_5 = __pyx_v_y;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_5; __pyx_t_9+=90) {
    __pyx_v__ = __pyx_t_9;
 0515:         # z -> -x and x -> z
+0516:         template[..., (0, 2)] = template[..., (2, 0)]
  __pyx_tuple__11 = PyTuple_Pack(2, __pyx_int_2, __pyx_int_0); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);
/* … */
    __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_template), __pyx_tuple__12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 516, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  __pyx_tuple__12 = PyTuple_Pack(2, Py_Ellipsis, __pyx_tuple__11); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);
  __pyx_tuple__13 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_2); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);
    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_template), __pyx_tuple__14, __pyx_t_2) < 0)) __PYX_ERR(0, 516, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__14 = PyTuple_Pack(2, Py_Ellipsis, __pyx_tuple__13); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);
+0517:         template[..., 0] -= 0.5
    __Pyx_INCREF(__pyx_tuple__15);
    __pyx_t_10 = __pyx_tuple__15;
    __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_template), __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyFloat_SubtractObjC(__pyx_t_2, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_template), __pyx_t_10, __pyx_t_1) < 0)) __PYX_ERR(0, 517, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_tuple__15 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);
+0518:         template[..., 0] *= -1
    __Pyx_INCREF(__pyx_tuple__16);
    __pyx_t_10 = __pyx_tuple__16;
    __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_template), __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_int_neg_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_template), __pyx_t_10, __pyx_t_2) < 0)) __PYX_ERR(0, 518, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_tuple__16 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);
+0519:         template[..., 0] += 0.5
    __Pyx_INCREF(__pyx_tuple__17);
    __pyx_t_10 = __pyx_tuple__17;
    __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_template), __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyFloat_AddObjC(__pyx_t_2, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_template), __pyx_t_10, __pyx_t_1) < 0)) __PYX_ERR(0, 519, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
/* … */
  __pyx_tuple__17 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);
+0520:     return template
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_template));
  __pyx_r = ((PyArrayObject *)__pyx_v_template);
  goto __pyx_L0;
 0521: 
 0522: 
+0523: def makeVerticesFromModel(templates, dataMask=0):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_1makeVerticesFromModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9_renderer_makeVerticesFromModel[] = "\n    Returns a function that creates vertex arrays.\n\n    This produces vertex arrays based on the passed\n    templates. This doesn't cull any faces based on\n    if they are exposed.\n\n    :param templates: list of templates to draw\n    :param dataMask:  mask to mask the data\n    ";
static PyMethodDef __pyx_mdef_9_renderer_1makeVerticesFromModel = {"makeVerticesFromModel", (PyCFunction)__pyx_pw_9_renderer_1makeVerticesFromModel, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9_renderer_makeVerticesFromModel};
static PyObject *__pyx_pw_9_renderer_1makeVerticesFromModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_templates = 0;
  PyObject *__pyx_v_dataMask = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVerticesFromModel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_templates,&__pyx_n_s_dataMask,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)__pyx_int_0);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_templates)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dataMask);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeVerticesFromModel") < 0)) __PYX_ERR(0, 523, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_templates = values[0];
    __pyx_v_dataMask = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeVerticesFromModel", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 523, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.makeVerticesFromModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_makeVerticesFromModel(__pyx_self, __pyx_v_templates, __pyx_v_dataMask);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_21makeVerticesFromModel_2generator37(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
static PyObject *__pyx_pf_9_renderer_makeVerticesFromModel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_templates, PyObject *__pyx_v_dataMask) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_2_makeVerticesFromModel *__pyx_cur_scope;
  PyObject *__pyx_v_makeVertices = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVerticesFromModel", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_2_makeVerticesFromModel *)__pyx_tp_new_9_renderer___pyx_scope_struct_2_makeVerticesFromModel(__pyx_ptype_9_renderer___pyx_scope_struct_2_makeVerticesFromModel, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_templates = __pyx_v_templates;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_templates);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_templates);
  __pyx_cur_scope->__pyx_v_dataMask = __pyx_v_dataMask;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_dataMask);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_dataMask);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.makeVerticesFromModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_makeVertices);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__601 = PyTuple_Pack(5, __pyx_n_s_templates, __pyx_n_s_dataMask, __pyx_n_s_elements, __pyx_n_s_makeVertices, __pyx_n_s_makeVertices); if (unlikely(!__pyx_tuple__601)) __PYX_ERR(0, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__601);
  __Pyx_GIVEREF(__pyx_tuple__601);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9_renderer_1makeVerticesFromModel, NULL, __pyx_n_s_renderer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_makeVerticesFromModel, __pyx_t_2) < 0) __PYX_ERR(0, 523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__602 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__601, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeVerticesFromModel, 523, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__602)) __PYX_ERR(0, 523, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_2_makeVerticesFromModel {
  PyObject_HEAD
  PyObject *__pyx_v_dataMask;
  PyObject *__pyx_v_elements;
  PyObject *__pyx_v_templates;
};

 0524:     """
 0525:     Returns a function that creates vertex arrays.
 0526: 
 0527:     This produces vertex arrays based on the passed
 0528:     templates. This doesn't cull any faces based on
 0529:     if they are exposed.
 0530: 
 0531:     :param templates: list of templates to draw
 0532:     :param dataMask:  mask to mask the data
 0533:     """
+0534:     if isinstance(templates, list):
  __pyx_t_1 = __pyx_cur_scope->__pyx_v_templates;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyList_Check(__pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
  }
+0535:         templates = numpy.array(templates)
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_cur_scope->__pyx_v_templates); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_templates);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_templates);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_cur_scope->__pyx_v_templates);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_templates);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_templates, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
+0536:     if templates.shape == (6, 4, 6):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_templates, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_tuple__33, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 536, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 536, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_3) {
/* … */
  }
/* … */
  __pyx_tuple__33 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__33);
  __Pyx_GIVEREF(__pyx_tuple__33);
+0537:         templates = numpy.array([templates])
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_templates);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_templates);
    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_templates);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 537, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_templates);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_templates, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
+0538:     if len(templates.shape) == 4:
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_templates, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 538, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_3 = ((__pyx_t_8 == 4) != 0);
  if (__pyx_t_3) {
/* … */
  }
+0539:         templates = templates[numpy.newaxis, ...]
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_5, 1, Py_Ellipsis);
    __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_templates, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_templates);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_templates, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
+0540:     elements = templates.shape[0]
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_templates, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_cur_scope->__pyx_v_elements = __pyx_t_5;
  __pyx_t_5 = 0;
 0541: 
+0542:     def makeVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21makeVerticesFromModel_1makeVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21makeVerticesFromModel_1makeVertices = {"makeVertices", (PyCFunction)__pyx_pw_9_renderer_21makeVerticesFromModel_1makeVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21makeVerticesFromModel_1makeVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 7, 7, 1); __PYX_ERR(0, 542, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 7, 7, 2); __PYX_ERR(0, 542, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 7, 7, 3); __PYX_ERR(0, 542, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 7, 7, 4); __PYX_ERR(0, 542, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 7, 7, 5); __PYX_ERR(0, 542, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 7, 7, 6); __PYX_ERR(0, 542, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeVertices") < 0)) __PYX_ERR(0, 542, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 542, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.makeVerticesFromModel.makeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21makeVerticesFromModel_makeVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21makeVerticesFromModel_makeVertices(PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_3_makeVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_3_makeVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_3_makeVertices(__pyx_ptype_9_renderer___pyx_scope_struct_3_makeVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_2_makeVerticesFromModel *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_21makeVerticesFromModel_2generator37, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeVertices, __pyx_n_s_makeVerticesFromModel_locals_mak, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 542, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.makeVerticesFromModel.makeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_21makeVerticesFromModel_2generator37(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 542, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("makeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__34 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_mask, __pyx_n_s_blockIndices, __pyx_n_s_data, __pyx_n_s_append, __pyx_n_s_i, __pyx_n_s_vertexArray, __pyx_n_s_indicies, __pyx_n_s_dimension); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__34);
  __Pyx_GIVEREF(__pyx_tuple__34);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21makeVerticesFromModel_1makeVertices, 0, __pyx_n_s_makeVerticesFromModel_locals_mak, ((PyObject*)__pyx_cur_scope), __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_makeVertices = __pyx_t_5;
  __pyx_t_5 = 0;
  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(7, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeVertices, 542, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 542, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_3_makeVertices {
  PyObject_HEAD
  struct __pyx_obj_9_renderer___pyx_scope_struct_2_makeVerticesFromModel *__pyx_outer_scope;
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_data;
  PyObject *__pyx_v_dimension;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_i;
  long __pyx_v_indicies;
  PyObject *__pyx_v_mask;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

+0543:         mask = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_mask = __pyx_t_1;
  __pyx_t_1 = 0;
+0544:         blockIndices = mask.nonzero()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_mask, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blockIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+0545:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 545, __pyx_L1_error)
 0546: 
+0547:         data = blockData[mask]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_data = __pyx_t_1;
  __pyx_t_1 = 0;
+0548:         data &= dataMask
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_dataMask)) { __Pyx_RaiseClosureNameError("dataMask"); __PYX_ERR(0, 548, __pyx_L1_error) }
  __pyx_t_1 = PyNumber_InPlaceAnd(__pyx_cur_scope->__pyx_v_data, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_dataMask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_data);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_data, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
+0549:         self.vertexArrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_t_1) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0550:         append = self.vertexArrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_append); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_2;
  __pyx_t_2 = 0;
+0551:         for i in xrange(elements):
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_elements)) { __Pyx_RaiseClosureNameError("elements"); __PYX_ERR(0, 551, __pyx_L1_error) }
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_elements);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_elements);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_elements);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_xrange, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 551, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 551, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 551, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0552:             vertexArray = numpy.zeros((len(blockIndices[0]), 6, 4, 6), dtype='float32')
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_blockIndices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 552, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_6);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_int_4);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_int_6);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 552, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
+0553:             for indicies in xrange(3):
    for (__pyx_t_9 = 0; __pyx_t_9 < 3; __pyx_t_9+=1) {
      __pyx_cur_scope->__pyx_v_indicies = __pyx_t_9;
+0554:                 dimension = (0, 2, 1)[indicies]
      __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_tuple__18, __pyx_cur_scope->__pyx_v_indicies, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 554, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dimension);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dimension, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      __pyx_t_8 = 0;
/* … */
  __pyx_tuple__18 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_2, __pyx_int_1); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);
 0555: 
+0556:                 vertexArray[..., indicies] = blockIndices[dimension][:, numpy.newaxis,
      __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_dimension); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_slice__19);
      __Pyx_GIVEREF(__pyx_slice__19);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_slice__19);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_4);
      __pyx_t_1 = 0;
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_GetItem(__pyx_t_8, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_indicies); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(Py_Ellipsis);
      __Pyx_GIVEREF(Py_Ellipsis);
      PyTuple_SET_ITEM(__pyx_t_8, 0, Py_Ellipsis);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3);
      __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8, __pyx_t_4) < 0)) __PYX_ERR(0, 556, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
/* … */
  __pyx_slice__19 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__19)) __PYX_ERR(0, 556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__19);
  __Pyx_GIVEREF(__pyx_slice__19);
+0557:                                              numpy.newaxis]  # xxx swap z with y using ^
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 0558: 
+0559:             vertexArray[..., 0:5] += templates[i, data][..., 0:5]
  __pyx_slice__20 = PySlice_New(__pyx_int_0, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__20)) __PYX_ERR(0, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__20);
  __Pyx_GIVEREF(__pyx_slice__20);
/* … */
    __Pyx_INCREF(__pyx_tuple__21);
    __pyx_t_10 = __pyx_tuple__21;
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_templates)) { __Pyx_RaiseClosureNameError("templates"); __PYX_ERR(0, 559, __pyx_L1_error) }
    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_i);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_i);
    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_cur_scope->__pyx_v_i);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_data);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_data);
    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_cur_scope->__pyx_v_data);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_templates, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__21 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__20); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);
  __pyx_slice__22 = PySlice_New(__pyx_int_0, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__22)) __PYX_ERR(0, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__22);
  __Pyx_GIVEREF(__pyx_slice__22);
    __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_tuple__23); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_10, __pyx_t_3) < 0)) __PYX_ERR(0, 559, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_tuple__23 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__22); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__23);
  __Pyx_GIVEREF(__pyx_tuple__23);
+0560:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices] & 15)[..., numpy.newaxis, :]
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = __Pyx_PyInt_AndObjC(__pyx_t_11, __pyx_int_15, 15, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_11 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_11, function);
        __pyx_t_7 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_7, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_12);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_7, __pyx_t_12);
    __pyx_t_1 = 0;
    __pyx_t_12 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_11, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__24);
    __Pyx_GIVEREF(__pyx_slice__24);
    PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_slice__24);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_t_8, __pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3, __pyx_t_11) < 0)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__24 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) __PYX_ERR(0, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__24);
  __Pyx_GIVEREF(__pyx_slice__24);
 0561: 
+0562:             vertexArray.view('uint8')[_RGB] = templates[i, data][..., 5][..., numpy.newaxis]
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_templates)) { __Pyx_RaiseClosureNameError("templates"); __PYX_ERR(0, 562, __pyx_L1_error) }
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_i);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_i);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_i);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_data);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_data);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_cur_scope->__pyx_v_data);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_templates, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_GetItem(__pyx_t_11, __pyx_tuple__25); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_11, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_14);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
/* … */
  __pyx_tuple__25 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_5); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_11, __pyx_t_14) < 0)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);
+0563:             vertexArray.view('uint8')[_A] = 0xFF
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 563, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 563, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_A); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 563, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (unlikely(PyObject_SetItem(__pyx_t_11, __pyx_t_14, __pyx_int_255) < 0)) __PYX_ERR(0, 563, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__27);
  __Pyx_GIVEREF(__pyx_tuple__27);
+0564:             vertexArray.view('uint8')[_RGB] *= areaBlockLights[1:-1, 1:-1, 1:-1][blockIndices][
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_3 = PyObject_GetItem(__pyx_t_11, __pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__28);
  __Pyx_GIVEREF(__pyx_tuple__28);
  __pyx_slice__29 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__29)) __PYX_ERR(0, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__29);
  __Pyx_GIVEREF(__pyx_slice__29);
  __pyx_slice__30 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__30)) __PYX_ERR(0, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__30);
  __Pyx_GIVEREF(__pyx_slice__30);
  __pyx_slice__31 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__31)) __PYX_ERR(0, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__31);
  __Pyx_GIVEREF(__pyx_slice__31);
    __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_tuple__32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_8, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
    __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_8, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_12);
    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_12);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_13);
    PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_13);
    __pyx_t_12 = 0;
    __pyx_t_1 = 0;
    __pyx_t_13 = 0;
    __pyx_t_13 = PyObject_GetItem(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_InPlaceMultiply(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_11, __pyx_t_14, __pyx_t_8) < 0)) __PYX_ERR(0, 564, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_tuple__32 = PyTuple_Pack(3, __pyx_slice__29, __pyx_slice__30, __pyx_slice__31); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);
+0565:                 ..., numpy.newaxis, numpy.newaxis, numpy.newaxis]
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0566:             vertexArray.shape = (vertexArray.shape[0] * 6, 4, 6)
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_shape); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = PyNumber_Multiply(__pyx_t_14, __pyx_int_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_11);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_int_4);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_int_6);
    __pyx_t_11 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_shape, __pyx_t_14) < 0) __PYX_ERR(0, 566, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+0567:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L9_resume_from_yield:;
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 567, __pyx_L1_error)
+0568:             append(vertexArray)
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_append);
    __pyx_t_11 = __pyx_cur_scope->__pyx_v_append; __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_11))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_11, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
    } else {
      __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_vertexArray);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_vertexArray);
      PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_cur_scope->__pyx_v_vertexArray);
      __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_13, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    }
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
 0569: 
+0570:     return makeVertices
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_makeVertices);
  __pyx_r = __pyx_v_makeVertices;
  goto __pyx_L0;
 0571: 
 0572: 
+0573: cpdef numpy.ndarray[numpy.float64_t, ndim=3] makeVertexTemplates(xmin=0, ymin=0,zmin=0, xmax=1, ymax=1, zmax=1):
static PyObject *__pyx_pw_9_renderer_3makeVertexTemplates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyArrayObject *__pyx_f_9_renderer_makeVertexTemplates(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9_renderer_makeVertexTemplates *__pyx_optional_args) {
  PyObject *__pyx_v_xmin = ((PyObject *)__pyx_int_0);
  PyObject *__pyx_v_ymin = ((PyObject *)__pyx_int_0);
  PyObject *__pyx_v_zmin = ((PyObject *)__pyx_int_0);
  PyObject *__pyx_v_xmax = ((PyObject *)__pyx_int_1);
  PyObject *__pyx_v_ymax = ((PyObject *)__pyx_int_1);
  PyObject *__pyx_v_zmax = ((PyObject *)__pyx_int_1);
  PyArrayObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVertexTemplates", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_xmin = __pyx_optional_args->xmin;
      if (__pyx_optional_args->__pyx_n > 1) {
        __pyx_v_ymin = __pyx_optional_args->ymin;
        if (__pyx_optional_args->__pyx_n > 2) {
          __pyx_v_zmin = __pyx_optional_args->zmin;
          if (__pyx_optional_args->__pyx_n > 3) {
            __pyx_v_xmax = __pyx_optional_args->xmax;
            if (__pyx_optional_args->__pyx_n > 4) {
              __pyx_v_ymax = __pyx_optional_args->ymax;
              if (__pyx_optional_args->__pyx_n > 5) {
                __pyx_v_zmax = __pyx_optional_args->zmax;
              }
            }
          }
        }
      }
    }
  }
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("_renderer.makeVertexTemplates", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_3makeVertexTemplates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9_renderer_3makeVertexTemplates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_xmin = 0;
  PyObject *__pyx_v_ymin = 0;
  PyObject *__pyx_v_zmin = 0;
  PyObject *__pyx_v_xmax = 0;
  PyObject *__pyx_v_ymax = 0;
  PyObject *__pyx_v_zmax = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVertexTemplates (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xmin,&__pyx_n_s_ymin,&__pyx_n_s_zmin,&__pyx_n_s_xmax,&__pyx_n_s_ymax,&__pyx_n_s_zmax,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    values[0] = ((PyObject *)__pyx_int_0);
    values[1] = ((PyObject *)__pyx_int_0);
    values[2] = ((PyObject *)__pyx_int_0);
    values[3] = ((PyObject *)__pyx_int_1);
    values[4] = ((PyObject *)__pyx_int_1);
    values[5] = ((PyObject *)__pyx_int_1);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_xmin);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ymin);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_zmin);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_xmax);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ymax);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_zmax);
          if (value) { values[5] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeVertexTemplates") < 0)) __PYX_ERR(0, 573, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_xmin = values[0];
    __pyx_v_ymin = values[1];
    __pyx_v_zmin = values[2];
    __pyx_v_xmax = values[3];
    __pyx_v_ymax = values[4];
    __pyx_v_zmax = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeVertexTemplates", 0, 0, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 573, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.makeVertexTemplates", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_2makeVertexTemplates(__pyx_self, __pyx_v_xmin, __pyx_v_ymin, __pyx_v_zmin, __pyx_v_xmax, __pyx_v_ymax, __pyx_v_zmax);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_2makeVertexTemplates(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_xmin, PyObject *__pyx_v_ymin, PyObject *__pyx_v_zmin, PyObject *__pyx_v_xmax, PyObject *__pyx_v_ymax, PyObject *__pyx_v_zmax) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVertexTemplates", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2.__pyx_n = 6;
  __pyx_t_2.xmin = __pyx_v_xmin;
  __pyx_t_2.ymin = __pyx_v_ymin;
  __pyx_t_2.zmin = __pyx_v_zmin;
  __pyx_t_2.xmax = __pyx_v_xmax;
  __pyx_t_2.ymax = __pyx_v_ymax;
  __pyx_t_2.zmax = __pyx_v_zmax;
  __pyx_t_1 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.makeVertexTemplates", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9_renderer_makeVertexTemplates {
  int __pyx_n;
  PyObject *xmin;
  PyObject *ymin;
  PyObject *zmin;
  PyObject *xmax;
  PyObject *ymax;
  PyObject *zmax;
};
+0574:     return numpy.array((
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 574, __pyx_L1_error)
  __pyx_r = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;
 0575: 
 0576:         # FaceXIncreasing:
+0577:         [[xmax, ymin, zmax, (zmin * 16), 16 - (ymin * 16), 0x0b],
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_zmin, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_ymin, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_4, 16, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_11);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
/* … */
  __pyx_t_8 = PyList_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_8, 3, __pyx_t_6);
  __pyx_t_4 = 0;
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
/* … */
  __pyx_t_4 = PyTuple_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_13);
  PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_t_13);
  __pyx_t_8 = 0;
  __pyx_t_9 = 0;
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
  __pyx_t_13 = 0;
  __pyx_t_13 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_13)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_13);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_13) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0578:          [xmax, ymin, zmin, (zmax * 16), 16 - (ymin * 16), 0x0b],
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_zmax, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_ymin, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_2, 16, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_11);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
+0579:          [xmax, ymax, zmin, (zmax * 16), 16 - (ymax * 16), 0x0b],
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_zmax, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_ymax, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_5, 16, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_11);
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
+0580:          [xmax, ymax, zmax, (zmin * 16), 16 - (ymax * 16), 0x0b],
  __pyx_t_7 = PyNumber_Multiply(__pyx_v_zmin, __pyx_int_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_ymax, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_6, 16, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_11);
  __pyx_t_7 = 0;
  __pyx_t_8 = 0;
 0581:          ],
 0582: 
 0583:         # FaceXDecreasing:
+0584:         [[xmin, ymin, zmin, (zmin * 16), 16 - (ymin * 16), 0x0b],
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_zmin, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_ymin, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_5, 16, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_11);
  __pyx_t_6 = 0;
  __pyx_t_2 = 0;
/* … */
  __pyx_t_9 = PyList_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_9, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_9, 2, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_9, 3, __pyx_t_4);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
+0585:          [xmin, ymin, zmax, (zmax * 16), 16 - (ymin * 16), 0x0b],
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_zmax, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_ymin, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_6, 16, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_4);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_11);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
+0586:          [xmin, ymax, zmax, (zmax * 16), 16 - (ymax * 16), 0x0b],
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_zmax, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_ymax, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_2, 16, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_11);
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
+0587:          [xmin, ymax, zmin, (zmin * 16), 16 - (ymax * 16), 0x0b]],
  __pyx_t_7 = PyNumber_Multiply(__pyx_v_zmin, __pyx_int_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_ymax, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_9 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_4, 16, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_9);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_9);
  __Pyx_INCREF(__pyx_int_11);
  __Pyx_GIVEREF(__pyx_int_11);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_11);
  __pyx_t_7 = 0;
  __pyx_t_9 = 0;
 0588: 
 0589:         # FaceYIncreasing:
+0590:         [[xmin, ymax, zmin, xmin * 16, 16 - (zmax * 16), 0x11],  # ne
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_xmin, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_zmax, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_2, 16, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_17);
  __Pyx_GIVEREF(__pyx_int_17);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_17);
  __pyx_t_4 = 0;
  __pyx_t_6 = 0;
/* … */
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_10, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_10, 3, __pyx_t_5);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
+0591:          [xmin, ymax, zmax, xmin * 16, 16 - (zmin * 16), 0x11],  # nw
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_xmin, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_zmin, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_4, 16, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_17);
  __Pyx_GIVEREF(__pyx_int_17);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_17);
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
+0592:          [xmax, ymax, zmax, xmax * 16, 16 - (zmin * 16), 0x11],  # sw
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_xmax, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_zmin, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_6, 16, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_17);
  __Pyx_GIVEREF(__pyx_int_17);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_17);
  __pyx_t_5 = 0;
  __pyx_t_7 = 0;
+0593:          [xmax, ymax, zmin, xmax * 16, 16 - (zmax * 16), 0x11]],  # se
  __pyx_t_7 = PyNumber_Multiply(__pyx_v_xmax, __pyx_int_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_zmax, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_5, 16, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_10);
  __Pyx_INCREF(__pyx_int_17);
  __Pyx_GIVEREF(__pyx_int_17);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_17);
  __pyx_t_7 = 0;
  __pyx_t_10 = 0;
 0594: 
 0595:         # FaceYDecreasing:
+0596:         [[xmin, ymin, zmin, xmin * 16, 16 - (zmax * 16), 0x08],
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_xmin, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_zmax, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_6, 16, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_4);
  __Pyx_INCREF(__pyx_int_8);
  __Pyx_GIVEREF(__pyx_int_8);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_8);
  __pyx_t_5 = 0;
  __pyx_t_4 = 0;
/* … */
  __pyx_t_11 = PyList_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_11, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_11, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_11, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_11, 3, __pyx_t_2);
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
  __pyx_t_4 = 0;
  __pyx_t_2 = 0;
+0597:          [xmax, ymin, zmin, xmax * 16, 16 - (zmax * 16), 0x08],
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_xmax, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_zmax, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_5, 16, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_8);
  __Pyx_GIVEREF(__pyx_int_8);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_8);
  __pyx_t_4 = 0;
  __pyx_t_2 = 0;
+0598:          [xmax, ymin, zmax, xmax * 16, 16 - (zmin * 16), 0x08],
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_xmax, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_zmin, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_4, 16, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_8);
  __Pyx_GIVEREF(__pyx_int_8);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_8);
  __pyx_t_2 = 0;
  __pyx_t_7 = 0;
+0599:          [xmin, ymin, zmax, xmin * 16, 16 - (zmin * 16), 0x08]],
  __pyx_t_7 = PyNumber_Multiply(__pyx_v_xmin, __pyx_int_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_zmin, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_2, 16, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_11);
  __Pyx_INCREF(__pyx_int_8);
  __Pyx_GIVEREF(__pyx_int_8);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_8);
  __pyx_t_7 = 0;
  __pyx_t_11 = 0;
 0600: 
 0601:         # FaceZIncreasing:
+0602:         [[xmin, ymin, zmax, xmin * 16, 16 - (ymin * 16), 0x0d],
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_xmin, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_ymin, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_4, 16, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_13);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
/* … */
  __pyx_t_12 = PyList_New(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_12, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_12, 3, __pyx_t_6);
  __pyx_t_4 = 0;
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
+0603:          [xmax, ymin, zmax, xmax * 16, 16 - (ymin * 16), 0x0d],
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_xmax, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_ymin, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_2, 16, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_13);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
+0604:          [xmax, ymax, zmax, xmax * 16, 16 - (ymax * 16), 0x0d],
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_xmax, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_ymax, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_5, 16, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_13);
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
+0605:          [xmin, ymax, zmax, xmin * 16, 16 - (ymax * 16), 0x0d]],
  __pyx_t_7 = PyNumber_Multiply(__pyx_v_xmin, __pyx_int_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_ymax, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_12 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_6, 16, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_v_zmax);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmax);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_12);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_13);
  __pyx_t_7 = 0;
  __pyx_t_12 = 0;
 0606: 
 0607:         # FaceZDecreasing:
+0608:         [[xmax, ymin, zmin, xmin * 16, 16 - (ymin * 16), 0x0d],
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_xmin, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_ymin, __pyx_int_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_5, 16, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_int_13);
  __pyx_t_6 = 0;
  __pyx_t_2 = 0;
/* … */
  __pyx_t_13 = PyList_New(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_13, 2, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_13, 3, __pyx_t_4);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
+0609:          [xmin, ymin, zmin, xmax * 16, 16 - (ymin * 16), 0x0d],
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_xmax, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = PyNumber_Multiply(__pyx_v_ymin, __pyx_int_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_6, 16, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymin);
  __Pyx_GIVEREF(__pyx_v_ymin);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_ymin);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_4);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_int_13);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
+0610:          [xmin, ymax, zmin, xmax * 16, 16 - (ymax * 16), 0x0d],
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_xmax, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_ymax, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_2, 16, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_xmin);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_int_13);
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
+0611:          [xmax, ymax, zmin, xmin * 16, 16 - (ymax * 16), 0x0d],
  __pyx_t_7 = PyNumber_Multiply(__pyx_v_xmin, __pyx_int_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_ymax, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_13 = __Pyx_PyInt_SubtractCObj(__pyx_int_16, __pyx_t_4, 16, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmax);
  __Pyx_GIVEREF(__pyx_v_xmax);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmax);
  __Pyx_INCREF(__pyx_v_ymax);
  __Pyx_GIVEREF(__pyx_v_ymax);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_ymax);
  __Pyx_INCREF(__pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_v_zmin);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_v_zmin);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_4, 4, __pyx_t_13);
  __Pyx_INCREF(__pyx_int_13);
  __Pyx_GIVEREF(__pyx_int_13);
  PyList_SET_ITEM(__pyx_t_4, 5, __pyx_int_13);
  __pyx_t_7 = 0;
  __pyx_t_13 = 0;
 0612:         ],
 0613: 
 0614:     ))
 0615: 
 0616: 
+0617: cdef int elementByteLength = 24
  __pyx_v_9_renderer_elementByteLength = 24;
 0618: 
 0619: 
+0620: cdef list createPrecomputedVertices():
static PyObject *__pyx_f_9_renderer_createPrecomputedVertices(void) {
  PyObject *__pyx_v_precomputedVertices = 0;
  int __pyx_v_dir;
  int __pyx_v_height;
  PyObject *__pyx_v_xArray = NULL;
  PyObject *__pyx_v_zArray = NULL;
  PyObject *__pyx_v_yArray = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_d = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createPrecomputedVertices", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.createPrecomputedVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_precomputedVertices);
  __Pyx_XDECREF(__pyx_v_xArray);
  __Pyx_XDECREF(__pyx_v_zArray);
  __Pyx_XDECREF(__pyx_v_yArray);
  __Pyx_XDECREF(__pyx_v_d);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0621:     cdef list precomputedVertices
 0622:     cdef int dir
+0623:     cdef int height = 16
  __pyx_v_height = 16;
+0624:     precomputedVertices = [numpy.zeros(shape=(16, 16, height, 4, 6),  # x,y,z,s,t,rg, ba
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
/* … */
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_height); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_int_16);
    __Pyx_GIVEREF(__pyx_int_16);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_int_16);
    __Pyx_INCREF(__pyx_int_16);
    __Pyx_GIVEREF(__pyx_int_16);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_16);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_int_4);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_int_6);
    __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_7) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 624, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0625:                                        dtype='float32') for d in faceVertexTemplates]
  if (unlikely(__pyx_v_9_renderer_faceVertexTemplates == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 625, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_v_9_renderer_faceVertexTemplates; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
  for (;;) {
    if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 625, __pyx_L1_error)
    #else
    __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_4);
    __pyx_t_4 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_precomputedVertices = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 0626: 
+0627:     xArray = numpy.arange(16)[:, numpy.newaxis, numpy.newaxis, numpy.newaxis]
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_int_16); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__36);
  __Pyx_GIVEREF(__pyx_tuple__36);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_slice__37);
  __Pyx_GIVEREF(__pyx_slice__37);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__37);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_xArray = __pyx_t_5;
  __pyx_t_5 = 0;
  __pyx_slice__37 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__37);
  __Pyx_GIVEREF(__pyx_slice__37);
+0628:     zArray = numpy.arange(16)[numpy.newaxis, :, numpy.newaxis, numpy.newaxis]
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_int_16); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__38);
  __Pyx_GIVEREF(__pyx_tuple__38);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_slice__39);
  __Pyx_GIVEREF(__pyx_slice__39);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__39);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_7);
  __pyx_t_1 = 0;
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_zArray = __pyx_t_7;
  __pyx_t_7 = 0;
  __pyx_slice__39 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__39)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__39);
  __Pyx_GIVEREF(__pyx_slice__39);
+0629:     yArray = numpy.arange(height)[numpy.newaxis, numpy.newaxis, :, numpy.newaxis]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_arange); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_height); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 629, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __Pyx_INCREF(__pyx_slice__40);
  __Pyx_GIVEREF(__pyx_slice__40);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_slice__40);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_yArray = __pyx_t_4;
  __pyx_t_4 = 0;
/* … */
  __pyx_slice__40 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__40)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__40);
  __Pyx_GIVEREF(__pyx_slice__40);
 0630: 
+0631:     for dir in xrange(len(faceVertexTemplates)):
  __pyx_t_4 = __pyx_v_9_renderer_faceVertexTemplates;
  __Pyx_INCREF(__pyx_t_4);
  if (unlikely(__pyx_t_4 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 631, __pyx_L1_error)
  }
  __pyx_t_3 = PyList_GET_SIZE(__pyx_t_4); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 631, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_3; __pyx_t_8+=1) {
    __pyx_v_dir = __pyx_t_8;
+0632:         precomputedVertices[dir][_XYZ][..., 0] = xArray
    __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_precomputedVertices, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = PyObject_GetItem(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_tuple__41, __pyx_v_xArray) < 0)) __PYX_ERR(0, 632, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_tuple__41 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__41);
  __Pyx_GIVEREF(__pyx_tuple__41);
+0633:         precomputedVertices[dir][_XYZ][..., 1] = yArray
    __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_precomputedVertices, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_tuple__42, __pyx_v_yArray) < 0)) __PYX_ERR(0, 633, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__42 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__42);
  __Pyx_GIVEREF(__pyx_tuple__42);
+0634:         precomputedVertices[dir][_XYZ][..., 2] = zArray
    __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_precomputedVertices, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 634, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 634, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = PyObject_GetItem(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 634, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_tuple__43, __pyx_v_zArray) < 0)) __PYX_ERR(0, 634, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_tuple__43 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__43);
  __Pyx_GIVEREF(__pyx_tuple__43);
+0635:         precomputedVertices[dir][_XYZ] += faceVertexTemplates[dir][..., 0:3]  # xyz
    __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_precomputedVertices, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__pyx_v_9_renderer_faceVertexTemplates == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 635, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_9_renderer_faceVertexTemplates, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
/* … */
  __pyx_slice__44 = PySlice_New(__pyx_int_0, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__44)) __PYX_ERR(0, 635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__44);
  __Pyx_GIVEREF(__pyx_slice__44);
    __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_tuple__45); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_5, __pyx_t_2) < 0)) __PYX_ERR(0, 635, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__45 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__44); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__45);
  __Pyx_GIVEREF(__pyx_tuple__45);
 0636: 
+0637:         precomputedVertices[dir][_ST] = faceVertexTemplates[dir][..., 3:5]  # s
    if (unlikely(__pyx_v_9_renderer_faceVertexTemplates == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 637, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_9_renderer_faceVertexTemplates, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
/* … */
  __pyx_slice__46 = PySlice_New(__pyx_int_3, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__46)) __PYX_ERR(0, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__46);
  __Pyx_GIVEREF(__pyx_slice__46);
    __pyx_t_5 = PyObject_GetItem(__pyx_t_7, __pyx_tuple__47); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_precomputedVertices, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_2, __pyx_t_5) < 0)) __PYX_ERR(0, 637, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_tuple__47 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__46); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__47);
  __Pyx_GIVEREF(__pyx_tuple__47);
+0638:         precomputedVertices[dir].view('uint8')[_RGB] = faceVertexTemplates[dir][..., 5, numpy.newaxis]
    if (unlikely(__pyx_v_9_renderer_faceVertexTemplates == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 638, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_9_renderer_faceVertexTemplates, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_2, 0, Py_Ellipsis);
    __Pyx_INCREF(__pyx_int_5);
    __Pyx_GIVEREF(__pyx_int_5);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_7 = PyObject_GetItem(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_precomputedVertices, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_view); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_5, __pyx_t_7) < 0)) __PYX_ERR(0, 638, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__48);
  __Pyx_GIVEREF(__pyx_tuple__48);
+0639:         precomputedVertices[dir].view('uint8')[_A] = 0xff
    __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_precomputedVertices, __pyx_v_dir, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 639, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_view); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 639, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 639, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_A); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 639, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_5, __pyx_int_255) < 0)) __PYX_ERR(0, 639, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
/* … */
  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);
 0640: 
+0641:     return precomputedVertices
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_precomputedVertices);
  __pyx_r = __pyx_v_precomputedVertices;
  goto __pyx_L0;
 0642: 
 0643: 
+0644: cdef list faceVertexTemplates = makeVertexTemplates()
  __pyx_t_2 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 644, __pyx_L1_error)
  __Pyx_XGOTREF(__pyx_v_9_renderer_faceVertexTemplates);
  __Pyx_DECREF_SET(__pyx_v_9_renderer_faceVertexTemplates, ((PyObject*)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
 0645: 
 0646: 
+0647: class ChunkCalculator(object):
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_ChunkCalculator, __pyx_n_s_ChunkCalculator, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_ChunkCalculator, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ChunkCalculator, __pyx_t_11) < 0) __PYX_ERR(0, 647, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0648:     cachedTemplate = None
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_cachedTemplate, Py_None) < 0) __PYX_ERR(0, 648, __pyx_L1_error)
+0649:     cachedTemplateHeight = 0
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_cachedTemplateHeight, __pyx_int_0) < 0) __PYX_ERR(0, 649, __pyx_L1_error)
 0650: 
+0651:     whiteLight = numpy.array([[[15] * 16] * 16] * 16, numpy.uint8)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(1 * 16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 16; __pyx_temp++) {
      __Pyx_INCREF(__pyx_int_15);
      __Pyx_GIVEREF(__pyx_int_15);
      PyList_SET_ITEM(__pyx_t_5, __pyx_temp, __pyx_int_15);
    }
  }
  __pyx_t_7 = PyList_New(1 * 16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 16; __pyx_temp++) {
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_t_5);
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(1 * 16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 16; __pyx_temp++) {
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      PyList_SET_ITEM(__pyx_t_5, __pyx_temp, __pyx_t_7);
    }
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_uint8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_8);
  __pyx_t_5 = 0;
  __pyx_t_8 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_whiteLight, __pyx_t_4) < 0) __PYX_ERR(0, 651, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0652:     precomputedVertices = createPrecomputedVertices()
  __pyx_t_4 = __pyx_f_9_renderer_createPrecomputedVertices(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_precomputedVertices, __pyx_t_4) < 0) __PYX_ERR(0, 652, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 0653: 
+0654:     def __init__(self, level):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_level = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_level,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_level)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 654, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 654, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_level = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 654, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator___init__(__pyx_self, __pyx_v_self, __pyx_v_level);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_level) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.ChunkCalculator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__603 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_level); if (unlikely(!__pyx_tuple__603)) __PYX_ERR(0, 654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__603);
  __Pyx_GIVEREF(__pyx_tuple__603);
/* … */
  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_1__init__, 0, __pyx_n_s_ChunkCalculator___init, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__604)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 654, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_codeobj__604 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__603, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_init, 654, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__604)) __PYX_ERR(0, 654, __pyx_L1_error)
+0655:         self.level = level
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_level, __pyx_v_level) < 0) __PYX_ERR(0, 655, __pyx_L1_error)
+0656:         self.makeRenderstates(level.materials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_makeRenderstates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_level, __pyx_n_s_materials); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0657: 
 0658:         # del xArray, zArray, yArray
+0659:         self.nullVertices = numpy.zeros((0,) * len(self.precomputedVertices[0].shape),
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_precomputedVertices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_6 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyNumber_Multiply(__pyx_tuple__50, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
  __pyx_t_5 = 0;
/* … */
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_nullVertices, __pyx_t_3) < 0) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__50 = PyTuple_New(1); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__50);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_tuple__50, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_tuple__50);
+0660:                                         dtype=self.precomputedVertices[0].dtype)
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_precomputedVertices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 660, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0661:         config.settings.fastLeaves.addObserver(self)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fastLeaves); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 661, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_self);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 661, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0662:         config.settings.roughGraphics.addObserver(self)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_roughGraphics); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_INCREF(__pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_self);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 0663: 
+0664:     class renderstatePlain(object):
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_builtin_object);
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_4, __pyx_n_s_renderstatePlain, __pyx_n_s_ChunkCalculator_renderstatePlain, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
/* … */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_renderstatePlain, __pyx_t_4, __pyx_t_10, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstatePlain, __pyx_t_8) < 0) __PYX_ERR(0, 664, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0665:         @classmethod
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_bind, __pyx_t_5) < 0) __PYX_ERR(0, 666, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0666:         def bind(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_16renderstatePlain_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_16renderstatePlain_1bind = {"bind", (PyCFunction)__pyx_pw_9_renderer_16renderstatePlain_1bind, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_16renderstatePlain_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_16renderstatePlain_bind(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_16renderstatePlain_bind(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__605 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__605)) __PYX_ERR(0, 666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__605);
  __Pyx_GIVEREF(__pyx_tuple__605);
/* … */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_16renderstatePlain_1bind, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstatePlain_2, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__606)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_codeobj__606 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__605, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_bind, 666, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__606)) __PYX_ERR(0, 666, __pyx_L1_error)
 0667:             pass
 0668: 
+0669:         @classmethod
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_release, __pyx_t_8) < 0) __PYX_ERR(0, 670, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0670:         def release(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_16renderstatePlain_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_16renderstatePlain_3release = {"release", (PyCFunction)__pyx_pw_9_renderer_16renderstatePlain_3release, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_16renderstatePlain_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_16renderstatePlain_2release(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_16renderstatePlain_2release(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__607 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__607)) __PYX_ERR(0, 670, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__607);
  __Pyx_GIVEREF(__pyx_tuple__607);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_16renderstatePlain_3release, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstatePlain_3, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__608)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 670, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_codeobj__608 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__607, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_release, 670, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__608)) __PYX_ERR(0, 670, __pyx_L1_error)
 0671:             pass
 0672: 
+0673:     class renderstateVines(object):
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_builtin_object);
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_4, __pyx_n_s_renderstateVines, __pyx_n_s_ChunkCalculator_renderstateVines, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
/* … */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_renderstateVines, __pyx_t_4, __pyx_t_10, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstateVines, __pyx_t_8) < 0) __PYX_ERR(0, 673, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0674:         @classmethod
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 674, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_bind, __pyx_t_5) < 0) __PYX_ERR(0, 675, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0675:         def bind(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_16renderstateVines_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_16renderstateVines_1bind = {"bind", (PyCFunction)__pyx_pw_9_renderer_16renderstateVines_1bind, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_16renderstateVines_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_16renderstateVines_bind(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_16renderstateVines_bind(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.renderstateVines.bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__609 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__609)) __PYX_ERR(0, 675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__609);
  __Pyx_GIVEREF(__pyx_tuple__609);
/* … */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_16renderstateVines_1bind, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstateVines_2, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__610)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_codeobj__610 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__609, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_bind, 675, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__610)) __PYX_ERR(0, 675, __pyx_L1_error)
+0676:             GL.glDisable(GL.GL_CULL_FACE)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_CULL_FACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 676, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0677:             GL.glEnable(GL.GL_ALPHA_TEST)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_ALPHA_TEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0678: 
+0679:         @classmethod
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_release, __pyx_t_8) < 0) __PYX_ERR(0, 680, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0680:         def release(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_16renderstateVines_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_16renderstateVines_3release = {"release", (PyCFunction)__pyx_pw_9_renderer_16renderstateVines_3release, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_16renderstateVines_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_16renderstateVines_2release(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_16renderstateVines_2release(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.renderstateVines.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__611 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__611)) __PYX_ERR(0, 680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__611);
  __Pyx_GIVEREF(__pyx_tuple__611);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_16renderstateVines_3release, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstateVines_3, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__612)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_codeobj__612 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__611, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_release, 680, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__612)) __PYX_ERR(0, 680, __pyx_L1_error)
+0681:             GL.glEnable(GL.GL_CULL_FACE)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_CULL_FACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 681, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0682:             GL.glDisable(GL.GL_ALPHA_TEST)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_ALPHA_TEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 682, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0683: 
+0684:     class renderstateLowDetail(object):
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_builtin_object);
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_4, __pyx_n_s_renderstateLowDetail, __pyx_n_s_ChunkCalculator_renderstateLowDe, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
/* … */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_renderstateLowDetail, __pyx_t_4, __pyx_t_10, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstateLowDetail, __pyx_t_8) < 0) __PYX_ERR(0, 684, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0685:         @classmethod
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_bind, __pyx_t_5) < 0) __PYX_ERR(0, 686, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0686:         def bind(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_20renderstateLowDetail_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_20renderstateLowDetail_1bind = {"bind", (PyCFunction)__pyx_pw_9_renderer_20renderstateLowDetail_1bind, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_20renderstateLowDetail_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_20renderstateLowDetail_bind(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_20renderstateLowDetail_bind(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.renderstateLowDetail.bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__613 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__613)) __PYX_ERR(0, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__613);
  __Pyx_GIVEREF(__pyx_tuple__613);
/* … */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_20renderstateLowDetail_1bind, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstateLowDe_2, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__614)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_codeobj__614 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__613, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_bind, 686, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__614)) __PYX_ERR(0, 686, __pyx_L1_error)
+0687:             GL.glDisable(GL.GL_CULL_FACE)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_CULL_FACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 687, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0688:             GL.glDisable(GL.GL_TEXTURE_2D)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0689: 
+0690:         @classmethod
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_release, __pyx_t_8) < 0) __PYX_ERR(0, 691, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0691:         def release(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_20renderstateLowDetail_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_20renderstateLowDetail_3release = {"release", (PyCFunction)__pyx_pw_9_renderer_20renderstateLowDetail_3release, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_20renderstateLowDetail_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_20renderstateLowDetail_2release(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_20renderstateLowDetail_2release(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.renderstateLowDetail.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__615 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__615)) __PYX_ERR(0, 691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__615);
  __Pyx_GIVEREF(__pyx_tuple__615);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_20renderstateLowDetail_3release, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstateLowDe_3, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__616)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_codeobj__616 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__615, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_release, 691, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__616)) __PYX_ERR(0, 691, __pyx_L1_error)
+0692:             GL.glEnable(GL.GL_CULL_FACE)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_CULL_FACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 692, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0693:             GL.glEnable(GL.GL_TEXTURE_2D)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0694: 
+0695:     class renderstateAlphaTest(object):
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_builtin_object);
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_4, __pyx_n_s_renderstateAlphaTest, __pyx_n_s_ChunkCalculator_renderstateAlpha, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
/* … */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_renderstateAlphaTest, __pyx_t_4, __pyx_t_10, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstateAlphaTest, __pyx_t_8) < 0) __PYX_ERR(0, 695, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0696:         @classmethod
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_bind, __pyx_t_5) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0697:         def bind(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_20renderstateAlphaTest_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_20renderstateAlphaTest_1bind = {"bind", (PyCFunction)__pyx_pw_9_renderer_20renderstateAlphaTest_1bind, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_20renderstateAlphaTest_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_20renderstateAlphaTest_bind(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_20renderstateAlphaTest_bind(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.renderstateAlphaTest.bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__617 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__617)) __PYX_ERR(0, 697, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__617);
  __Pyx_GIVEREF(__pyx_tuple__617);
/* … */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_20renderstateAlphaTest_1bind, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstateAlpha_2, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__618)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 697, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_codeobj__618 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__617, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_bind, 697, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__618)) __PYX_ERR(0, 697, __pyx_L1_error)
+0698:             GL.glEnable(GL.GL_ALPHA_TEST)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_ALPHA_TEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0699: 
+0700:         @classmethod
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_release, __pyx_t_8) < 0) __PYX_ERR(0, 701, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0701:         def release(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_20renderstateAlphaTest_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_20renderstateAlphaTest_3release = {"release", (PyCFunction)__pyx_pw_9_renderer_20renderstateAlphaTest_3release, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_20renderstateAlphaTest_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_20renderstateAlphaTest_2release(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_20renderstateAlphaTest_2release(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.renderstateAlphaTest.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__619 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__619)) __PYX_ERR(0, 701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__619);
  __Pyx_GIVEREF(__pyx_tuple__619);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_20renderstateAlphaTest_3release, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstateAlpha_3, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__620)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_codeobj__620 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__619, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_release, 701, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__620)) __PYX_ERR(0, 701, __pyx_L1_error)
+0702:             GL.glDisable(GL.GL_ALPHA_TEST)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_ALPHA_TEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 702, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0703: 
+0704:     class _renderstateAlphaBlend(object):
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_builtin_object);
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_4, __pyx_n_s_renderstateAlphaBlend, __pyx_n_s_ChunkCalculator__renderstateAlph, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
/* … */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_renderstateAlphaBlend, __pyx_t_4, __pyx_t_10, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstateAlphaBlend, __pyx_t_8) < 0) __PYX_ERR(0, 704, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0705:         @classmethod
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_bind, __pyx_t_5) < 0) __PYX_ERR(0, 706, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0706:         def bind(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_22_renderstateAlphaBlend_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_22_renderstateAlphaBlend_1bind = {"bind", (PyCFunction)__pyx_pw_9_renderer_22_renderstateAlphaBlend_1bind, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_22_renderstateAlphaBlend_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_22_renderstateAlphaBlend_bind(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_22_renderstateAlphaBlend_bind(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer._renderstateAlphaBlend.bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__621 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__621)) __PYX_ERR(0, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__621);
  __Pyx_GIVEREF(__pyx_tuple__621);
/* … */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_22_renderstateAlphaBlend_1bind, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator__renderstateAlph_2, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__622)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_codeobj__622 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__621, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_bind, 706, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__622)) __PYX_ERR(0, 706, __pyx_L1_error)
+0707:             GL.glEnable(GL.GL_BLEND)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_BLEND); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 707, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 707, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 707, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0708: 
+0709:         @classmethod
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_release, __pyx_t_8) < 0) __PYX_ERR(0, 710, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0710:         def release(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_22_renderstateAlphaBlend_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_22_renderstateAlphaBlend_3release = {"release", (PyCFunction)__pyx_pw_9_renderer_22_renderstateAlphaBlend_3release, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_22_renderstateAlphaBlend_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_22_renderstateAlphaBlend_2release(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_22_renderstateAlphaBlend_2release(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer._renderstateAlphaBlend.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__623 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__623)) __PYX_ERR(0, 710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__623);
  __Pyx_GIVEREF(__pyx_tuple__623);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_22_renderstateAlphaBlend_3release, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator__renderstateAlph_3, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__624)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_codeobj__624 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__623, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_release, 710, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__624)) __PYX_ERR(0, 710, __pyx_L1_error)
+0711:             GL.glDisable(GL.GL_BLEND)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_BLEND); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0712: 
+0713:     class renderstateWater(_renderstateAlphaBlend):
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_renderstateAlphaBlend);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_renderstateAlphaBlend);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_6, __pyx_n_s_renderstateWater, __pyx_n_s_ChunkCalculator_renderstateWater, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_n_s_renderstateWater, __pyx_t_6, __pyx_t_10, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstateWater, __pyx_t_8) < 0) __PYX_ERR(0, 713, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 0714:         pass
 0715: 
+0716:     class renderstateIce(_renderstateAlphaBlend):
  __pyx_t_6 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_renderstateAlphaBlend);
  if (unlikely(!__pyx_t_6)) {
    PyErr_Clear();
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_renderstateAlphaBlend);
  }
  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_4, __pyx_n_s_renderstateIce, __pyx_n_s_ChunkCalculator_renderstateIce, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_renderstateIce, __pyx_t_4, __pyx_t_10, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstateIce, __pyx_t_8) < 0) __PYX_ERR(0, 716, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 0717:         pass
 0718: 
+0719:     class renderstateEntity(object):
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_builtin_object);
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_4, __pyx_n_s_renderstateEntity, __pyx_n_s_ChunkCalculator_renderstateEntit, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
/* … */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_renderstateEntity, __pyx_t_4, __pyx_t_10, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstateEntity, __pyx_t_8) < 0) __PYX_ERR(0, 719, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0720:         @classmethod
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_bind, __pyx_t_5) < 0) __PYX_ERR(0, 721, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0721:         def bind(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17renderstateEntity_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17renderstateEntity_1bind = {"bind", (PyCFunction)__pyx_pw_9_renderer_17renderstateEntity_1bind, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_17renderstateEntity_1bind(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_17renderstateEntity_bind(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17renderstateEntity_bind(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.renderstateEntity.bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__625 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__625)) __PYX_ERR(0, 721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__625);
  __Pyx_GIVEREF(__pyx_tuple__625);
/* … */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17renderstateEntity_1bind, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstateEntit_2, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__626)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_codeobj__626 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__625, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_bind, 721, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__626)) __PYX_ERR(0, 721, __pyx_L1_error)
+0722:             GL.glDisable(GL.GL_DEPTH_TEST)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0723:             # GL.glDisable(GL.GL_CULL_FACE)
+0724:             GL.glDisable(GL.GL_TEXTURE_2D)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 724, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0725:             GL.glEnable(GL.GL_BLEND)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_BLEND); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 725, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0726: 
+0727:         @classmethod
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_10, __pyx_n_s_release, __pyx_t_8) < 0) __PYX_ERR(0, 728, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0728:         def release(cls):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17renderstateEntity_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17renderstateEntity_3release = {"release", (PyCFunction)__pyx_pw_9_renderer_17renderstateEntity_3release, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_17renderstateEntity_3release(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_17renderstateEntity_2release(__pyx_self, ((PyObject *)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17renderstateEntity_2release(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.renderstateEntity.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__627 = PyTuple_Pack(1, __pyx_n_s_cls); if (unlikely(!__pyx_tuple__627)) __PYX_ERR(0, 728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__627);
  __Pyx_GIVEREF(__pyx_tuple__627);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17renderstateEntity_3release, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ChunkCalculator_renderstateEntit_3, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__628)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_codeobj__628 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__627, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_release, 728, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__628)) __PYX_ERR(0, 728, __pyx_L1_error)
+0729:             GL.glEnable(GL.GL_DEPTH_TEST)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 729, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0730:             # GL.glEnable(GL.GL_CULL_FACE)
+0731:             GL.glEnable(GL.GL_TEXTURE_2D)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0732:             GL.glDisable(GL.GL_BLEND)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_BLEND); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 732, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 732, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 732, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0733: 
 0734:     renderstates = (
+0735:         renderstatePlain,
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_renderstatePlain);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_renderstatePlain);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
/* … */
  __pyx_t_12 = PyTuple_New(7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_12, 4, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_12, 5, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_12, 6, __pyx_t_11);
  __pyx_t_4 = 0;
  __pyx_t_6 = 0;
  __pyx_t_10 = 0;
  __pyx_t_8 = 0;
  __pyx_t_5 = 0;
  __pyx_t_7 = 0;
  __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstates, __pyx_t_12) < 0) __PYX_ERR(0, 734, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+0736:         renderstateVines,
  __pyx_t_6 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_renderstateVines);
  if (unlikely(!__pyx_t_6)) {
    PyErr_Clear();
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_renderstateVines);
  }
  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 736, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
+0737:         renderstateLowDetail,
  __pyx_t_10 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_renderstateLowDetail);
  if (unlikely(!__pyx_t_10)) {
    PyErr_Clear();
    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_renderstateLowDetail);
  }
  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
+0738:         renderstateAlphaTest,
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_renderstateAlphaTest);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_renderstateAlphaTest);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
+0739:         renderstateIce,
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_renderstateIce);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renderstateIce);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
+0740:         renderstateWater,
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_renderstateWater);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_renderstateWater);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
+0741:         renderstateEntity,
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_renderstateEntity);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_renderstateEntity);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
 0742:     )
 0743: 
+0744:     def makeRenderstates(self, materials):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_3makeRenderstates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_3makeRenderstates = {"makeRenderstates", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_3makeRenderstates, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_3makeRenderstates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_materials = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeRenderstates (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_materials,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_materials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRenderstates", 1, 2, 2, 1); __PYX_ERR(0, 744, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeRenderstates") < 0)) __PYX_ERR(0, 744, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_materials = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeRenderstates", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 744, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.makeRenderstates", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_2makeRenderstates(__pyx_self, __pyx_v_self, __pyx_v_materials);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_2makeRenderstates(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_materials) {
  PyObject *__pyx_v_materialMap = NULL;
  PyObject *__pyx_v_materialCount = NULL;
  PyObject *__pyx_v_br = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeRenderstates", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_XDECREF(__pyx_t_19);
  __Pyx_XDECREF(__pyx_t_20);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_24);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_26);
  __Pyx_XDECREF(__pyx_t_27);
  __Pyx_XDECREF(__pyx_t_28);
  __Pyx_XDECREF(__pyx_t_29);
  __Pyx_AddTraceback("_renderer.ChunkCalculator.makeRenderstates", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_materialMap);
  __Pyx_XDECREF(__pyx_v_materialCount);
  __Pyx_XDECREF(__pyx_v_br);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__629 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_materials, __pyx_n_s_materialMap, __pyx_n_s_materialCount, __pyx_n_s_br); if (unlikely(!__pyx_tuple__629)) __PYX_ERR(0, 744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__629);
  __Pyx_GIVEREF(__pyx_tuple__629);
/* … */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_3makeRenderstates, 0, __pyx_n_s_ChunkCalculator_makeRenderstates, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__630)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeRenderstates, __pyx_t_12) < 0) __PYX_ERR(0, 744, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_codeobj__630 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__629, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeRenderstates, 744, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__630)) __PYX_ERR(0, 744, __pyx_L1_error)
+0745:         self.blockRendererClasses = [
  __pyx_t_7 = PyList_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_7, 4, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_7, 5, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_blockRendererClasses, __pyx_t_7) < 0) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0746:             GenericBlockRenderer,
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GenericBlockRenderer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
+0747:             LeafBlockRenderer,
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LeafBlockRenderer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 747, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
+0748:             PlantBlockRenderer,
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_PlantBlockRenderer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
+0749:             TorchBlockRenderer,
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_TorchBlockRenderer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
+0750:             WaterBlockRenderer,
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_WaterBlockRenderer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
+0751:             SlabBlockRenderer,
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_SlabBlockRenderer); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
 0752:         ]
+0753:         if materials.name in ("Alpha", "Pocket"):
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_materials, __pyx_n_s_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_Alpha, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 753, __pyx_L1_error)
  if (!__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_Pocket, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 753, __pyx_L1_error)
  __pyx_t_8 = __pyx_t_9;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_9 = (__pyx_t_8 != 0);
  if (__pyx_t_9) {
/* … */
  }
+0754:             self.blockRendererClasses += [
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_blockRendererClasses); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
/* … */
    __pyx_t_29 = PyList_New(25); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_29);
    __Pyx_GIVEREF(__pyx_t_6);
    PyList_SET_ITEM(__pyx_t_29, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_5);
    PyList_SET_ITEM(__pyx_t_29, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyList_SET_ITEM(__pyx_t_29, 2, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyList_SET_ITEM(__pyx_t_29, 3, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2);
    PyList_SET_ITEM(__pyx_t_29, 4, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyList_SET_ITEM(__pyx_t_29, 5, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_10);
    PyList_SET_ITEM(__pyx_t_29, 6, __pyx_t_10);
    __Pyx_GIVEREF(__pyx_t_11);
    PyList_SET_ITEM(__pyx_t_29, 7, __pyx_t_11);
    __Pyx_GIVEREF(__pyx_t_12);
    PyList_SET_ITEM(__pyx_t_29, 8, __pyx_t_12);
    __Pyx_GIVEREF(__pyx_t_13);
    PyList_SET_ITEM(__pyx_t_29, 9, __pyx_t_13);
    __Pyx_GIVEREF(__pyx_t_14);
    PyList_SET_ITEM(__pyx_t_29, 10, __pyx_t_14);
    __Pyx_GIVEREF(__pyx_t_15);
    PyList_SET_ITEM(__pyx_t_29, 11, __pyx_t_15);
    __Pyx_GIVEREF(__pyx_t_16);
    PyList_SET_ITEM(__pyx_t_29, 12, __pyx_t_16);
    __Pyx_GIVEREF(__pyx_t_17);
    PyList_SET_ITEM(__pyx_t_29, 13, __pyx_t_17);
    __Pyx_GIVEREF(__pyx_t_18);
    PyList_SET_ITEM(__pyx_t_29, 14, __pyx_t_18);
    __Pyx_GIVEREF(__pyx_t_19);
    PyList_SET_ITEM(__pyx_t_29, 15, __pyx_t_19);
    __Pyx_GIVEREF(__pyx_t_20);
    PyList_SET_ITEM(__pyx_t_29, 16, __pyx_t_20);
    __Pyx_GIVEREF(__pyx_t_21);
    PyList_SET_ITEM(__pyx_t_29, 17, __pyx_t_21);
    __Pyx_GIVEREF(__pyx_t_22);
    PyList_SET_ITEM(__pyx_t_29, 18, __pyx_t_22);
    __Pyx_GIVEREF(__pyx_t_23);
    PyList_SET_ITEM(__pyx_t_29, 19, __pyx_t_23);
    __Pyx_GIVEREF(__pyx_t_24);
    PyList_SET_ITEM(__pyx_t_29, 20, __pyx_t_24);
    __Pyx_GIVEREF(__pyx_t_25);
    PyList_SET_ITEM(__pyx_t_29, 21, __pyx_t_25);
    __Pyx_GIVEREF(__pyx_t_26);
    PyList_SET_ITEM(__pyx_t_29, 22, __pyx_t_26);
    __Pyx_GIVEREF(__pyx_t_27);
    PyList_SET_ITEM(__pyx_t_29, 23, __pyx_t_27);
    __Pyx_GIVEREF(__pyx_t_28);
    PyList_SET_ITEM(__pyx_t_29, 24, __pyx_t_28);
    __pyx_t_6 = 0;
    __pyx_t_5 = 0;
    __pyx_t_4 = 0;
    __pyx_t_3 = 0;
    __pyx_t_2 = 0;
    __pyx_t_1 = 0;
    __pyx_t_10 = 0;
    __pyx_t_11 = 0;
    __pyx_t_12 = 0;
    __pyx_t_13 = 0;
    __pyx_t_14 = 0;
    __pyx_t_15 = 0;
    __pyx_t_16 = 0;
    __pyx_t_17 = 0;
    __pyx_t_18 = 0;
    __pyx_t_19 = 0;
    __pyx_t_20 = 0;
    __pyx_t_21 = 0;
    __pyx_t_22 = 0;
    __pyx_t_23 = 0;
    __pyx_t_24 = 0;
    __pyx_t_25 = 0;
    __pyx_t_26 = 0;
    __pyx_t_27 = 0;
    __pyx_t_28 = 0;
    __pyx_t_28 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_t_29); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_28);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_blockRendererClasses, __pyx_t_28) < 0) __PYX_ERR(0, 754, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
+0755:                 RailBlockRenderer,
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_RailBlockRenderer); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
+0756:                 LadderBlockRenderer,
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_LadderBlockRenderer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 756, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
+0757:                 SnowBlockRenderer,
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_SnowBlockRenderer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 757, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
+0758:                 CarpetBlockRenderer,
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_CarpetBlockRenderer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
+0759:                 CactusBlockRenderer,
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_CactusBlockRenderer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
+0760:                 PaneBlockRenderer,
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_PaneBlockRenderer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
+0761:                 CakeBlockRenderer,
    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_CakeBlockRenderer); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
+0762:                 DaylightBlockRenderer,
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_DaylightBlockRenderer); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
+0763:                 StandingSignRenderer,
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_StandingSignRenderer); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 763, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
+0764:                 WallSignBlockRenderer,
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_WallSignBlockRenderer); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
+0765:                 LeverBlockRenderer,
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_LeverBlockRenderer); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
+0766:                 BedBlockRenderer,
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_BedBlockRenderer); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
+0767:                 EnchantingBlockRenderer,
    __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_EnchantingBlockRenderer); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
+0768:                 RedstoneBlockRenderer,
    __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_RedstoneBlockRenderer); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
+0769:                 IceBlockRenderer,
    __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_IceBlockRenderer); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 769, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_18);
+0770:                 DoorRenderer,
    __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_DoorRenderer); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_19);
+0771:                 ButtonRenderer,
    __pyx_t_20 = __Pyx_GetModuleGlobalName(__pyx_n_s_ButtonRenderer); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 771, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_20);
+0772:                 TrapDoorRenderer,
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_TrapDoorRenderer); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 772, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_21);
+0773:                 FenceBlockRenderer,
    __pyx_t_22 = __Pyx_GetModuleGlobalName(__pyx_n_s_FenceBlockRenderer); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 773, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_22);
+0774:                 FenceGateBlockRenderer,
    __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_FenceGateBlockRenderer); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
+0775:                 StairBlockRenderer,
    __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_StairBlockRenderer); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_24);
+0776:                 RepeaterBlockRenderer,
    __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_RepeaterBlockRenderer); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
+0777:                 VineBlockRenderer,
    __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_VineBlockRenderer); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 777, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_26);
+0778:                 PlateBlockRenderer,
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_PlateBlockRenderer); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
+0779:                 EndRodRenderer,
    __pyx_t_28 = __Pyx_GetModuleGlobalName(__pyx_n_s_EndRodRenderer); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 779, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_28);
 0780:                 # button, floor plate, door -> 1-cube features
 0781:                 # lever, sign, wall sign, stairs -> 2-cube features
 0782:                 # fence
 0783:                 # portal
 0784:             ]
 0785: 
+0786:         self.materialMap = materialMap = numpy.zeros((pymclevel.materials.id_limit,), 'uint8')
  __pyx_t_29 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_29);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_29, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
  __pyx_t_29 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_29);
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_29, __pyx_n_s_materials); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
  __pyx_t_29 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_id_limit); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_29);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_29);
  PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_29);
  __pyx_t_29 = 0;
  __pyx_t_29 = NULL;
  __pyx_t_30 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_29 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_29)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_29);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_30 = 1;
    }
  }
  __pyx_t_26 = PyTuple_New(2+__pyx_t_30); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (__pyx_t_29) {
    __Pyx_GIVEREF(__pyx_t_29); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_29); __pyx_t_29 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_30, __pyx_t_27);
  __Pyx_INCREF(__pyx_n_s_uint8);
  __Pyx_GIVEREF(__pyx_n_s_uint8);
  PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_30, __pyx_n_s_uint8);
  __pyx_t_27 = 0;
  __pyx_t_28 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_26, NULL); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_28);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_materialMap, __pyx_t_28) < 0) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_INCREF(__pyx_t_28);
  __pyx_v_materialMap = __pyx_t_28;
  __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
+0787:         materialMap[1:] = 1  # generic blocks
  if (__Pyx_PyObject_SetSlice(__pyx_v_materialMap, __pyx_int_1, 1, 0, NULL, NULL, &__pyx_slice__51, 1, 0, 1) < 0) __PYX_ERR(0, 787, __pyx_L1_error)
/* … */
  __pyx_slice__51 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__51)) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__51);
  __Pyx_GIVEREF(__pyx_slice__51);
 0788: 
+0789:         materialCount = 2
  __Pyx_INCREF(__pyx_int_2);
  __pyx_v_materialCount = __pyx_int_2;
 0790: 
+0791:         for br in self.blockRendererClasses[1:]:  # skip generic blocks
  __pyx_t_28 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_blockRendererClasses); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_28);
  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_28, 1, 0, NULL, NULL, &__pyx_slice__52, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
  if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
    __pyx_t_28 = __pyx_t_7; __Pyx_INCREF(__pyx_t_28); __pyx_t_30 = 0;
    __pyx_t_31 = NULL;
  } else {
    __pyx_t_30 = -1; __pyx_t_28 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 791, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_28);
    __pyx_t_31 = Py_TYPE(__pyx_t_28)->tp_iternext; if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 791, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  for (;;) {
    if (likely(!__pyx_t_31)) {
      if (likely(PyList_CheckExact(__pyx_t_28))) {
        if (__pyx_t_30 >= PyList_GET_SIZE(__pyx_t_28)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_28, __pyx_t_30); __Pyx_INCREF(__pyx_t_7); __pyx_t_30++; if (unlikely(0 < 0)) __PYX_ERR(0, 791, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_28, __pyx_t_30); __pyx_t_30++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 791, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      } else {
        if (__pyx_t_30 >= PyTuple_GET_SIZE(__pyx_t_28)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_28, __pyx_t_30); __Pyx_INCREF(__pyx_t_7); __pyx_t_30++; if (unlikely(0 < 0)) __PYX_ERR(0, 791, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_28, __pyx_t_30); __pyx_t_30++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 791, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      }
    } else {
      __pyx_t_7 = __pyx_t_31(__pyx_t_28);
      if (unlikely(!__pyx_t_7)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 791, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_XDECREF_SET(__pyx_v_br, __pyx_t_7);
    __pyx_t_7 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
/* … */
  __pyx_slice__52 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__52)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__52);
  __Pyx_GIVEREF(__pyx_slice__52);
+0792:             materialMap[br.getBlocktypes(materials)] = materialCount
    __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_v_br, __pyx_n_s_getBlocktypes); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 792, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_26);
    __pyx_t_27 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
      __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_26);
      if (likely(__pyx_t_27)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
        __Pyx_INCREF(__pyx_t_27);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_26, function);
      }
    }
    if (!__pyx_t_27) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_26, __pyx_v_materials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 792, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    } else {
      __pyx_t_29 = PyTuple_New(1+1); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 792, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_29);
      __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_29, 0, __pyx_t_27); __pyx_t_27 = NULL;
      __Pyx_INCREF(__pyx_v_materials);
      __Pyx_GIVEREF(__pyx_v_materials);
      PyTuple_SET_ITEM(__pyx_t_29, 0+1, __pyx_v_materials);
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_29, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 792, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
    }
    __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
    if (unlikely(PyObject_SetItem(__pyx_v_materialMap, __pyx_t_7, __pyx_v_materialCount) < 0)) __PYX_ERR(0, 792, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0793:             br.materialIndex = materialCount
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_br, __pyx_n_s_materialIndex, __pyx_v_materialCount) < 0) __PYX_ERR(0, 793, __pyx_L1_error)
+0794:             materialCount += 1
    __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_v_materialCount, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 794, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF_SET(__pyx_v_materialCount, __pyx_t_7);
    __pyx_t_7 = 0;
 0795: 
+0796:         self.exposedMaterialMap = numpy.array(materialMap)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_26))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_26);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_26, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_28 = __Pyx_PyObject_CallOneArg(__pyx_t_26, __pyx_v_materialMap); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_28);
  } else {
    __pyx_t_29 = PyTuple_New(1+1); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_29);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_29, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_INCREF(__pyx_v_materialMap);
    __Pyx_GIVEREF(__pyx_v_materialMap);
    PyTuple_SET_ITEM(__pyx_t_29, 0+1, __pyx_v_materialMap);
    __pyx_t_28 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_29, NULL); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_28);
    __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
  }
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_exposedMaterialMap, __pyx_t_28) < 0) __PYX_ERR(0, 796, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
+0797:         self.addTransparentMaterials(self.exposedMaterialMap, materialCount)
  __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_addTransparentMaterials); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __pyx_t_29 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_exposedMaterialMap); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_29);
  __pyx_t_7 = NULL;
  __pyx_t_30 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_26);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_26, function);
      __pyx_t_30 = 1;
    }
  }
  __pyx_t_27 = PyTuple_New(2+__pyx_t_30); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_29);
  PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_30, __pyx_t_29);
  __Pyx_INCREF(__pyx_v_materialCount);
  __Pyx_GIVEREF(__pyx_v_materialCount);
  PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_30, __pyx_v_materialCount);
  __pyx_t_29 = 0;
  __pyx_t_28 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_27, NULL); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_28);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
 0798: 
+0799:     def addTransparentMaterials(self, mats, materialCount):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_5addTransparentMaterials(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_5addTransparentMaterials = {"addTransparentMaterials", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_5addTransparentMaterials, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_5addTransparentMaterials(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_v_materialCount = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addTransparentMaterials (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_mats,&__pyx_n_s_materialCount,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("addTransparentMaterials", 1, 3, 3, 1); __PYX_ERR(0, 799, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_materialCount)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("addTransparentMaterials", 1, 3, 3, 2); __PYX_ERR(0, 799, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addTransparentMaterials") < 0)) __PYX_ERR(0, 799, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_mats = values[1];
    __pyx_v_materialCount = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addTransparentMaterials", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 799, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.addTransparentMaterials", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_4addTransparentMaterials(__pyx_self, __pyx_v_self, __pyx_v_mats, __pyx_v_materialCount);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_4addTransparentMaterials(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_mats, PyObject *__pyx_v_materialCount) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_v_yaml = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addTransparentMaterials", 0);
  __Pyx_INCREF(__pyx_v_materialCount);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("_renderer.ChunkCalculator.addTransparentMaterials", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XDECREF(__pyx_v_yaml);
  __Pyx_XDECREF(__pyx_v_materialCount);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_8generator1(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__631 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_mats, __pyx_n_s_materialCount, __pyx_n_s_b, __pyx_n_s_yaml); if (unlikely(!__pyx_tuple__631)) __PYX_ERR(0, 799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__631);
  __Pyx_GIVEREF(__pyx_tuple__631);
/* … */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_5addTransparentMaterials, 0, __pyx_n_s_ChunkCalculator_addTransparentMa, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__632)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_addTransparentMaterials, __pyx_t_12) < 0) __PYX_ERR(0, 799, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_codeobj__632 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__631, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_addTransparentMaterials, 799, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__632)) __PYX_ERR(0, 799, __pyx_L1_error)
+0800:         logging.debug("renderer::ChunkCalculator: Dynamically adding transparent materials.")
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_renderer_ChunkCalculator_Dynamic); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__53);
  __Pyx_GIVEREF(__pyx_tuple__53);
+0801:         for b in self.level.materials:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_materials); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 801, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 801, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 801, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_4(__pyx_t_1);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 801, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_2);
    __pyx_t_2 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0802:             yaml = getattr(b, 'yaml', None)
    __pyx_t_2 = __Pyx_GetAttr3(__pyx_v_b, __pyx_n_s_yaml, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 802, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_yaml, __pyx_t_2);
    __pyx_t_2 = 0;
+0803:             if yaml is not None and yaml.get('opacity', 1) < 1:
    __pyx_t_6 = (__pyx_v_yaml != Py_None);
    __pyx_t_7 = (__pyx_t_6 != 0);
    if (__pyx_t_7) {
    } else {
      __pyx_t_5 = __pyx_t_7;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_yaml, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 803, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_8, __pyx_int_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 803, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_5 = __pyx_t_7;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_5) {
/* … */
    }
/* … */
  __pyx_tuple__54 = PyTuple_Pack(2, __pyx_n_s_opacity, __pyx_int_1); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__54);
  __Pyx_GIVEREF(__pyx_tuple__54);
+0804:                 logging.debug("Adding '%s'" % b)
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_debug); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_Adding_s, __pyx_v_b); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_10 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      if (!__pyx_t_10) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 804, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 804, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 804, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0805:                 mats[b.ID] = materialCount
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 805, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (unlikely(PyObject_SetItem(__pyx_v_mats, __pyx_t_2, __pyx_v_materialCount) < 0)) __PYX_ERR(0, 805, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0806:                 materialCount += 1
      __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_v_materialCount, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 806, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF_SET(__pyx_v_materialCount, __pyx_t_2);
      __pyx_t_2 = 0;
+0807:         logging.debug("renderer::ChunkCalculator: Transparent materials added.")
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_renderer_ChunkCalculator_Transpa); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__55);
  __Pyx_GIVEREF(__pyx_tuple__55);
 0808: 
 0809:     # don't show boundaries between dirt,grass,sand,gravel,or stone.
 0810:     # This hiddenOreMaterial definition shall be delayed after the level is loaded, in order to get the exact ones from the game versionned data.
+0811:     hiddenOreMaterials = numpy.arange(pymclevel.materials.id_limit, dtype='uint16')
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_arange); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_materials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_id_limit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_dtype, __pyx_n_s_uint16) < 0) __PYX_ERR(0, 811, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_hiddenOreMaterials, __pyx_t_5) < 0) __PYX_ERR(0, 811, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0812:     stoneid = alphaMaterials.Stone.ID
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Stone); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_ID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_stoneid, __pyx_t_5) < 0) __PYX_ERR(0, 812, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0813:     hiddenOreMaterials[alphaMaterials.Dirt.ID] = stoneid
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_stoneid);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_stoneid);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_hiddenOreMaterials);
  if (unlikely(!__pyx_t_12)) {
    PyErr_Clear();
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_hiddenOreMaterials);
  }
  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Dirt); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ID); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_5) < 0)) __PYX_ERR(0, 813, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0814:     hiddenOreMaterials[alphaMaterials.Grass.ID] = stoneid
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_stoneid);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_stoneid);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_hiddenOreMaterials);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_hiddenOreMaterials);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_Grass); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ID); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_12, __pyx_t_5) < 0)) __PYX_ERR(0, 814, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0815:     hiddenOreMaterials[alphaMaterials.Sand.ID] = stoneid
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_stoneid);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_stoneid);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_hiddenOreMaterials);
  if (unlikely(!__pyx_t_12)) {
    PyErr_Clear();
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_hiddenOreMaterials);
  }
  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Sand); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ID); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_5) < 0)) __PYX_ERR(0, 815, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0816:     hiddenOreMaterials[alphaMaterials.Gravel.ID] = stoneid
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_stoneid);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_stoneid);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_hiddenOreMaterials);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_hiddenOreMaterials);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_Gravel); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ID); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_12, __pyx_t_5) < 0)) __PYX_ERR(0, 816, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0817:     hiddenOreMaterials[alphaMaterials.Netherrack.ID] = stoneid
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_stoneid);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_stoneid);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_hiddenOreMaterials);
  if (unlikely(!__pyx_t_12)) {
    PyErr_Clear();
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_hiddenOreMaterials);
  }
  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Netherrack); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ID); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_5) < 0)) __PYX_ERR(0, 817, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 0818: 
+0819:     roughMaterials = numpy.ones((pymclevel.materials.id_limit,), dtype='uint8')
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_materials); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_id_limit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0) __PYX_ERR(0, 819, __pyx_L1_error)
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_roughMaterials, __pyx_t_11) < 0) __PYX_ERR(0, 819, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+0820:     roughMaterials[0] = 0
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_roughMaterials);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_roughMaterials);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 820, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (unlikely(__Pyx_SetItemInt(__pyx_t_11, 0, __pyx_int_0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 820, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 0821: 
+0822:     def calcFacesForChunkRenderer(self, cr):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_7calcFacesForChunkRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_7calcFacesForChunkRenderer = {"calcFacesForChunkRenderer", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_7calcFacesForChunkRenderer, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_7calcFacesForChunkRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_cr = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcFacesForChunkRenderer (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_cr,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("calcFacesForChunkRenderer", 1, 2, 2, 1); __PYX_ERR(0, 822, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calcFacesForChunkRenderer") < 0)) __PYX_ERR(0, 822, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_cr = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("calcFacesForChunkRenderer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 822, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.calcFacesForChunkRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_6calcFacesForChunkRenderer(__pyx_self, __pyx_v_self, __pyx_v_cr);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_2generator38(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_6calcFacesForChunkRenderer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_cr) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_4_calcFacesForChunkRenderer *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcFacesForChunkRenderer", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_4_calcFacesForChunkRenderer *)__pyx_tp_new_9_renderer___pyx_scope_struct_4_calcFacesForChunkRenderer(__pyx_ptype_9_renderer___pyx_scope_struct_4_calcFacesForChunkRenderer, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_cr = __pyx_v_cr;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cr);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_15ChunkCalculator_8generator1, (PyObject *) __pyx_cur_scope, __pyx_n_s_calcFacesForChunkRenderer, __pyx_n_s_ChunkCalculator_calcFacesForChun_2, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 822, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.calcFacesForChunkRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_8generator1(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 822, __pyx_L1_error)
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_AddTraceback("calcFacesForChunkRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__634 = PyTuple_Pack(19, __pyx_n_s_self, __pyx_n_s_cr, __pyx_n_s_lod, __pyx_n_s_cx, __pyx_n_s_cz, __pyx_n_s_level, __pyx_n_s_chunk, __pyx_n_s_e, __pyx_n_s_brs, __pyx_n_s_append, __pyx_n_s_classes, __pyx_n_s_existingBlockRenderers, __pyx_n_s_blockRendererClass, __pyx_n_s_br, __pyx_n_s__633, __pyx_n_s_blockRenderers, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__634)) __PYX_ERR(0, 822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__634);
  __Pyx_GIVEREF(__pyx_tuple__634);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_7calcFacesForChunkRenderer, 0, __pyx_n_s_ChunkCalculator_calcFacesForChun_2, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__635)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_calcFacesForChunkRenderer, __pyx_t_11) < 0) __PYX_ERR(0, 822, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_codeobj__635 = (PyObject*)__Pyx_PyCode_New(2, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__634, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_calcFacesForChunkRenderer, 822, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__635)) __PYX_ERR(0, 822, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_4_calcFacesForChunkRenderer {
  PyObject_HEAD
  PyObject *__pyx_v__;
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_blockRendererClass;
  PyObject *__pyx_v_blockRenderers;
  PyObject *__pyx_v_br;
  PyObject *__pyx_v_brs;
  PyObject *__pyx_v_chunk;
  PyObject *__pyx_v_classes;
  PyObject *__pyx_v_cr;
  PyObject *__pyx_v_cx;
  PyObject *__pyx_v_cz;
  PyObject *__pyx_v_e;
  PyObject *__pyx_v_existingBlockRenderers;
  PyObject *__pyx_v_genexpr;
  PyObject *__pyx_v_level;
  PyObject *__pyx_v_lod;
  PyObject *__pyx_v_self;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
  PyObject *__pyx_t_3;
  PyObject *__pyx_t_4;
  PyObject *__pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
};

+0823:         if not cr.invalidLayers:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_invalidLayers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 823, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {
/* … */
  }
+0824:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;
 0825: 
+0826:         lod = cr.detailLevel
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_detailLevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_lod = __pyx_t_1;
  __pyx_t_1 = 0;
+0827:         cx, cz = cr.chunkPosition
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 827, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_5);
    #else
    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
    index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 827, __pyx_L1_error)
    __pyx_t_7 = NULL;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L6_unpacking_done;
    __pyx_L5_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 827, __pyx_L1_error)
    __pyx_L6_unpacking_done:;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_cx = __pyx_t_4;
  __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_cur_scope->__pyx_v_cz = __pyx_t_5;
  __pyx_t_5 = 0;
+0828:         level = cr.renderer.level
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_level); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_cur_scope->__pyx_v_level = __pyx_t_5;
  __pyx_t_5 = 0;
+0829:         try:
  {
    /*try:*/ {
/* … */
    }
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    goto __pyx_L14_try_end;
    __pyx_L7_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    goto __pyx_L1_error;
    __pyx_L10_except_return:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    goto __pyx_L0;
    __pyx_L14_try_end:;
  }
+0830:             chunk = level.getChunk(cx, cz)
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_level, __pyx_n_s_getChunk); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_11 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 830, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cx);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cx);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_11, __pyx_cur_scope->__pyx_v_cx);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cz);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cz);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_11, __pyx_cur_scope->__pyx_v_cz);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 830, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_cur_scope->__pyx_v_chunk = __pyx_t_5;
      __pyx_t_5 = 0;
+0831:         except Exception, e:
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_12) {
      __Pyx_AddTraceback("_renderer.ChunkCalculator.calcFacesForChunkRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(0, 831, __pyx_L9_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_e = __pyx_t_1;
+0832:             if "Session lock lost" in e.message:
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 832, __pyx_L9_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_Session_lock_lost, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 832, __pyx_L9_except_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_2 = (__pyx_t_3 != 0);
      if (__pyx_t_2) {
/* … */
      }
+0833:                 yield
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_t_5);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_3 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_t_9);
        __pyx_cur_scope->__pyx_t_4 = __pyx_t_9;
        __Pyx_XGIVEREF(__pyx_t_10);
        __pyx_cur_scope->__pyx_t_5 = __pyx_t_10;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L18_resume_from_yield:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_5);
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_3;
        __pyx_cur_scope->__pyx_t_3 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        __pyx_t_9 = __pyx_cur_scope->__pyx_t_4;
        __pyx_cur_scope->__pyx_t_4 = 0;
        __Pyx_XGOTREF(__pyx_t_9);
        __pyx_t_10 = __pyx_cur_scope->__pyx_t_5;
        __pyx_cur_scope->__pyx_t_5 = 0;
        __Pyx_XGOTREF(__pyx_t_10);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 833, __pyx_L9_except_error)
+0834:                 return
        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L10_except_return;
+0835:             logging.warn(u"Error reading chunk: %s", e)
      __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 835, __pyx_L9_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_warn); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 835, __pyx_L9_except_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_13 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_14))) {
        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_14);
        if (likely(__pyx_t_13)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
          __Pyx_INCREF(__pyx_t_13);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_14, function);
          __pyx_t_11 = 1;
        }
      }
      __pyx_t_15 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 835, __pyx_L9_except_error)
      __Pyx_GOTREF(__pyx_t_15);
      if (__pyx_t_13) {
        __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_13); __pyx_t_13 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_u_Error_reading_chunk_s);
      __Pyx_GIVEREF(__pyx_kp_u_Error_reading_chunk_s);
      PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_11, __pyx_kp_u_Error_reading_chunk_s);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
      PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_11, __pyx_cur_scope->__pyx_v_e);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 835, __pyx_L9_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0836:             yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
      __Pyx_XGIVEREF(__pyx_t_5);
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
      __Pyx_XGIVEREF(__pyx_t_6);
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
      __Pyx_XGIVEREF(__pyx_t_8);
      __pyx_cur_scope->__pyx_t_3 = __pyx_t_8;
      __Pyx_XGIVEREF(__pyx_t_9);
      __pyx_cur_scope->__pyx_t_4 = __pyx_t_9;
      __Pyx_XGIVEREF(__pyx_t_10);
      __pyx_cur_scope->__pyx_t_5 = __pyx_t_10;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 2;
      return __pyx_r;
      __pyx_L19_resume_from_yield:;
      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = 0;
      __Pyx_XGOTREF(__pyx_t_5);
      __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
      __pyx_cur_scope->__pyx_t_2 = 0;
      __Pyx_XGOTREF(__pyx_t_6);
      __pyx_t_8 = __pyx_cur_scope->__pyx_t_3;
      __pyx_cur_scope->__pyx_t_3 = 0;
      __Pyx_XGOTREF(__pyx_t_8);
      __pyx_t_9 = __pyx_cur_scope->__pyx_t_4;
      __pyx_cur_scope->__pyx_t_4 = 0;
      __Pyx_XGOTREF(__pyx_t_9);
      __pyx_t_10 = __pyx_cur_scope->__pyx_t_5;
      __pyx_cur_scope->__pyx_t_5 = 0;
      __Pyx_XGOTREF(__pyx_t_10);
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 836, __pyx_L9_except_error)
+0837:             return
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L10_except_return;
    }
    goto __pyx_L9_except_error;
    __pyx_L9_except_error:;
 0838: 
+0839:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 3;
  return __pyx_r;
  __pyx_L20_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 839, __pyx_L1_error)
+0840:         brs = []
  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 840, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_brs = ((PyObject*)__pyx_t_6);
  __pyx_t_6 = 0;
+0841:         append = brs.append
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_brs, __pyx_n_s_append); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_6;
  __pyx_t_6 = 0;
+0842:         classes = [
  __pyx_t_17 = PyList_New(8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 842, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_17, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_17, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_17, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_17, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_14);
  PyList_SET_ITEM(__pyx_t_17, 4, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_17, 5, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_17, 6, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_16);
  PyList_SET_ITEM(__pyx_t_17, 7, __pyx_t_16);
  __pyx_t_6 = 0;
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_4 = 0;
  __pyx_t_14 = 0;
  __pyx_t_15 = 0;
  __pyx_t_13 = 0;
  __pyx_t_16 = 0;
  __Pyx_GIVEREF(__pyx_t_17);
  __pyx_cur_scope->__pyx_v_classes = ((PyObject*)__pyx_t_17);
  __pyx_t_17 = 0;
+0843:             TileEntityRenderer,
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_TileEntityRenderer); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
+0844:             MonsterRenderer,
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonsterRenderer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
+0845:             ItemRenderer,
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_ItemRenderer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
+0846:             TileTicksRenderer,
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_TileTicksRenderer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
+0847:             TerrainPopulatedRenderer,
  __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_TerrainPopulatedRenderer); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
+0848:             ChunkBorderRenderer,
  __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkBorderRenderer); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
+0849:             LowDetailBlockRenderer,
  __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_LowDetailBlockRenderer); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
+0850:             OverheadBlockRenderer,
  __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_OverheadBlockRenderer); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
 0851:         ]
+0852:         existingBlockRenderers = dict(((type(b), b) for b in cr.blockRenderers))
static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_5_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_5_genexpr *)__pyx_tp_new_9_renderer___pyx_scope_struct_5_genexpr(__pyx_ptype_9_renderer___pyx_scope_struct_5_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_4_calcFacesForChunkRenderer *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_2generator38, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_ChunkCalculator_calcFacesForChun, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 852, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.calcFacesForChunkRenderer.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_2generator38(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 852, __pyx_L1_error)
  __pyx_r = PyDict_New(); if (unlikely(!__pyx_r)) __PYX_ERR(0, 852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cr)) { __Pyx_RaiseClosureNameError("cr"); __PYX_ERR(0, 852, __pyx_L1_error) }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cr, __pyx_n_s_blockRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 852, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 852, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 852, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 852, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 852, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 852, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 852, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_b);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_b, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    if (unlikely(PyDict_SetItem(__pyx_r, (PyObject*)((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_b)), (PyObject*)__pyx_cur_scope->__pyx_v_b))) __PYX_ERR(0, 852, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_5generator39(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_t_17 = __pyx_pf_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __pyx_t_16 = __Pyx_Generator_Next(__pyx_t_17); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __Pyx_GIVEREF(__pyx_t_16);
  __pyx_cur_scope->__pyx_v_existingBlockRenderers = ((PyObject*)__pyx_t_16);
  __pyx_t_16 = 0;
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_5_genexpr {
  PyObject_HEAD
  struct __pyx_obj_9_renderer___pyx_scope_struct_4_calcFacesForChunkRenderer *__pyx_outer_scope;
  PyObject *__pyx_v_b;
};

 0853: 
+0854:         for blockRendererClass in classes:
  __pyx_t_16 = __pyx_cur_scope->__pyx_v_classes; __Pyx_INCREF(__pyx_t_16); __pyx_t_11 = 0;
  for (;;) {
    if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_16)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_17 = PyList_GET_ITEM(__pyx_t_16, __pyx_t_11); __Pyx_INCREF(__pyx_t_17); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 854, __pyx_L1_error)
    #else
    __pyx_t_17 = PySequence_ITEM(__pyx_t_16, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 854, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockRendererClass);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockRendererClass, __pyx_t_17);
    __Pyx_GIVEREF(__pyx_t_17);
    __pyx_t_17 = 0;
/* … */
    __pyx_L21_continue:;
  }
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+0855:             if cr.detailLevel not in blockRendererClass.detailLevels:
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_detailLevel); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 855, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockRendererClass, __pyx_n_s_detailLevels); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 855, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_17, __pyx_t_13, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 855, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __pyx_t_3 = (__pyx_t_2 != 0);
    if (__pyx_t_3) {
/* … */
    }
+0856:                 continue
      goto __pyx_L21_continue;
+0857:             if blockRendererClass.layer not in cr.visibleLayers:
    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockRendererClass, __pyx_n_s_layer); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 857, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_visibleLayers); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 857, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_13, __pyx_t_17, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 857, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __pyx_t_2 = (__pyx_t_3 != 0);
    if (__pyx_t_2) {
/* … */
    }
+0858:                 continue
      goto __pyx_L21_continue;
+0859:             if blockRendererClass.layer not in cr.invalidLayers:
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockRendererClass, __pyx_n_s_layer); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 859, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_invalidLayers); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 859, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_17, __pyx_t_13, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 859, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __pyx_t_3 = (__pyx_t_2 != 0);
    if (__pyx_t_3) {
/* … */
    }
+0860:                 if blockRendererClass in existingBlockRenderers:
      if (unlikely(__pyx_cur_scope->__pyx_v_existingBlockRenderers == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
        __PYX_ERR(0, 860, __pyx_L1_error)
      }
      __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_cur_scope->__pyx_v_blockRendererClass, __pyx_cur_scope->__pyx_v_existingBlockRenderers, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 860, __pyx_L1_error)
      __pyx_t_2 = (__pyx_t_3 != 0);
      if (__pyx_t_2) {
/* … */
      }
+0861:                     append(existingBlockRenderers[blockRendererClass])
        if (unlikely(__pyx_cur_scope->__pyx_v_existingBlockRenderers == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 861, __pyx_L1_error)
        }
        __pyx_t_13 = __Pyx_PyDict_GetItem(__pyx_cur_scope->__pyx_v_existingBlockRenderers, __pyx_cur_scope->__pyx_v_blockRendererClass); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 861, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_18 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_brs, __pyx_t_13); if (unlikely(__pyx_t_18 == -1)) __PYX_ERR(0, 861, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+0862:                 continue
      goto __pyx_L21_continue;
 0863: 
+0864:             br = blockRendererClass(self)
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockRendererClass);
    __pyx_t_17 = __pyx_cur_scope->__pyx_v_blockRendererClass; __pyx_t_15 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_17))) {
      __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_17);
      if (likely(__pyx_t_15)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
        __Pyx_INCREF(__pyx_t_15);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_17, function);
      }
    }
    if (!__pyx_t_15) {
      __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 864, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
    } else {
      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 864, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __pyx_t_15 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_cur_scope->__pyx_v_self);
      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_14, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 864, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    }
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_br);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_br, __pyx_t_13);
    __Pyx_GIVEREF(__pyx_t_13);
    __pyx_t_13 = 0;
+0865:             br.detailLevel = cr.detailLevel
    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_detailLevel); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 865, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_br, __pyx_n_s_detailLevel, __pyx_t_13) < 0) __PYX_ERR(0, 865, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 0866: 
+0867:             for _ in br.makeChunkVertices(chunk):
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_br, __pyx_n_s_makeChunkVertices); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 867, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_14 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_17))) {
      __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_17);
      if (likely(__pyx_t_14)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_17, function);
      }
    }
    if (!__pyx_t_14) {
      __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_cur_scope->__pyx_v_chunk); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 867, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
    } else {
      __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 867, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
      PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_cur_scope->__pyx_v_chunk);
      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_15, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 867, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    }
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    if (likely(PyList_CheckExact(__pyx_t_13)) || PyTuple_CheckExact(__pyx_t_13)) {
      __pyx_t_17 = __pyx_t_13; __Pyx_INCREF(__pyx_t_17); __pyx_t_19 = 0;
      __pyx_t_20 = NULL;
    } else {
      __pyx_t_19 = -1; __pyx_t_17 = PyObject_GetIter(__pyx_t_13); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 867, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      __pyx_t_20 = Py_TYPE(__pyx_t_17)->tp_iternext; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 867, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    for (;;) {
      if (likely(!__pyx_t_20)) {
        if (likely(PyList_CheckExact(__pyx_t_17))) {
          if (__pyx_t_19 >= PyList_GET_SIZE(__pyx_t_17)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_13 = PyList_GET_ITEM(__pyx_t_17, __pyx_t_19); __Pyx_INCREF(__pyx_t_13); __pyx_t_19++; if (unlikely(0 < 0)) __PYX_ERR(0, 867, __pyx_L1_error)
          #else
          __pyx_t_13 = PySequence_ITEM(__pyx_t_17, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 867, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          #endif
        } else {
          if (__pyx_t_19 >= PyTuple_GET_SIZE(__pyx_t_17)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_13 = PyTuple_GET_ITEM(__pyx_t_17, __pyx_t_19); __Pyx_INCREF(__pyx_t_13); __pyx_t_19++; if (unlikely(0 < 0)) __PYX_ERR(0, 867, __pyx_L1_error)
          #else
          __pyx_t_13 = PySequence_ITEM(__pyx_t_17, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 867, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          #endif
        }
      } else {
        __pyx_t_13 = __pyx_t_20(__pyx_t_17);
        if (unlikely(!__pyx_t_13)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 867, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_13);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_13);
      __Pyx_GIVEREF(__pyx_t_13);
      __pyx_t_13 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+0868:                 yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __pyx_cur_scope->__pyx_t_6 = __pyx_t_11;
      __Pyx_XGIVEREF(__pyx_t_16);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_16;
      __Pyx_XGIVEREF(__pyx_t_17);
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_17;
      __pyx_cur_scope->__pyx_t_7 = __pyx_t_19;
      __pyx_cur_scope->__pyx_t_8 = __pyx_t_20;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 4;
      return __pyx_r;
      __pyx_L29_resume_from_yield:;
      __pyx_t_11 = __pyx_cur_scope->__pyx_t_6;
      __pyx_t_16 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_16);
      __pyx_t_17 = __pyx_cur_scope->__pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = 0;
      __Pyx_XGOTREF(__pyx_t_17);
      __pyx_t_19 = __pyx_cur_scope->__pyx_t_7;
      __pyx_t_20 = __pyx_cur_scope->__pyx_t_8;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 868, __pyx_L1_error)
+0869:             append(br)
    __pyx_t_18 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_brs, __pyx_cur_scope->__pyx_v_br); if (unlikely(__pyx_t_18 == -1)) __PYX_ERR(0, 869, __pyx_L1_error)
 0870: 
+0871:         blockRenderers = []
  __pyx_t_16 = PyList_New(0); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __Pyx_GIVEREF(__pyx_t_16);
  __pyx_cur_scope->__pyx_v_blockRenderers = ((PyObject*)__pyx_t_16);
  __pyx_t_16 = 0;
 0872: 
 0873:         # Recalculate high detail blocks if needed, otherwise retain the high detail renderers
+0874:         if lod == 0 and Layer.Blocks in cr.invalidLayers:
  __pyx_t_16 = __Pyx_PyInt_EqObjC(__pyx_cur_scope->__pyx_v_lod, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_16); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 874, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L31_bool_binop_done;
  }
  __pyx_t_16 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Blocks); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_invalidLayers); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_16, __pyx_t_17, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 874, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __pyx_t_21 = (__pyx_t_3 != 0);
  __pyx_t_2 = __pyx_t_21;
  __pyx_L31_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
    goto __pyx_L30;
  }
+0875:             for _ in self.calcHighDetailFaces(cr, blockRenderers):
    __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_calcHighDetailFaces); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 875, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    __pyx_t_13 = NULL;
    __pyx_t_11 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_16))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_16);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_16, function);
        __pyx_t_11 = 1;
      }
    }
    __pyx_t_15 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 875, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cr);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cr);
    PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_11, __pyx_cur_scope->__pyx_v_cr);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockRenderers);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockRenderers);
    PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_11, __pyx_cur_scope->__pyx_v_blockRenderers);
    __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_t_15, NULL); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 875, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    if (likely(PyList_CheckExact(__pyx_t_17)) || PyTuple_CheckExact(__pyx_t_17)) {
      __pyx_t_16 = __pyx_t_17; __Pyx_INCREF(__pyx_t_16); __pyx_t_11 = 0;
      __pyx_t_20 = NULL;
    } else {
      __pyx_t_11 = -1; __pyx_t_16 = PyObject_GetIter(__pyx_t_17); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 875, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __pyx_t_20 = Py_TYPE(__pyx_t_16)->tp_iternext; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 875, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    for (;;) {
      if (likely(!__pyx_t_20)) {
        if (likely(PyList_CheckExact(__pyx_t_16))) {
          if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_16)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_17 = PyList_GET_ITEM(__pyx_t_16, __pyx_t_11); __Pyx_INCREF(__pyx_t_17); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 875, __pyx_L1_error)
          #else
          __pyx_t_17 = PySequence_ITEM(__pyx_t_16, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 875, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_17);
          #endif
        } else {
          if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_16)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_17 = PyTuple_GET_ITEM(__pyx_t_16, __pyx_t_11); __Pyx_INCREF(__pyx_t_17); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 875, __pyx_L1_error)
          #else
          __pyx_t_17 = PySequence_ITEM(__pyx_t_16, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 875, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_17);
          #endif
        }
      } else {
        __pyx_t_17 = __pyx_t_20(__pyx_t_16);
        if (unlikely(!__pyx_t_17)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 875, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_17);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_17);
      __Pyx_GIVEREF(__pyx_t_17);
      __pyx_t_17 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+0876:                 yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __pyx_cur_scope->__pyx_t_6 = __pyx_t_11;
      __Pyx_XGIVEREF(__pyx_t_16);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_16;
      __pyx_cur_scope->__pyx_t_8 = __pyx_t_20;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 5;
      return __pyx_r;
      __pyx_L35_resume_from_yield:;
      __pyx_t_11 = __pyx_cur_scope->__pyx_t_6;
      __pyx_t_16 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_16);
      __pyx_t_20 = __pyx_cur_scope->__pyx_t_8;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 876, __pyx_L1_error)
 0877:         else:
+0878:             blockRenderers.extend(br for br in cr.blockRenderers if type(br) not in classes)
static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_3genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_6_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_6_genexpr *)__pyx_tp_new_9_renderer___pyx_scope_struct_6_genexpr(__pyx_ptype_9_renderer___pyx_scope_struct_6_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_4_calcFacesForChunkRenderer *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_5generator39, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_ChunkCalculator_calcFacesForChun, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 878, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.calcFacesForChunkRenderer.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_5generator39(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 878, __pyx_L1_error)
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cr)) { __Pyx_RaiseClosureNameError("cr"); __PYX_ERR(0, 878, __pyx_L1_error) }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cr, __pyx_n_s_blockRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 878, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 878, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 878, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 878, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 878, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 878, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_br);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_br, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_classes)) { __Pyx_RaiseClosureNameError("classes"); __PYX_ERR(0, 878, __pyx_L1_error) }
    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_br)), __pyx_cur_scope->__pyx_outer_scope->__pyx_v_classes, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 878, __pyx_L1_error)
    __pyx_t_6 = (__pyx_t_5 != 0);
    if (__pyx_t_6) {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_br);
      __pyx_r = __pyx_cur_scope->__pyx_v_br;
      __Pyx_XGIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L7_resume_from_yield:;
      __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
      __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 878, __pyx_L1_error)
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  /*else*/ {
    __pyx_t_16 = __pyx_pf_9_renderer_15ChunkCalculator_25calcFacesForChunkRenderer_3genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    __pyx_t_18 = __Pyx_PyList_Extend(__pyx_cur_scope->__pyx_v_blockRenderers, __pyx_t_16); if (unlikely(__pyx_t_18 == -1)) __PYX_ERR(0, 878, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  }
  __pyx_L30:;
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_6_genexpr {
  PyObject_HEAD
  struct __pyx_obj_9_renderer___pyx_scope_struct_4_calcFacesForChunkRenderer *__pyx_outer_scope;
  PyObject *__pyx_v_br;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

 0879: 
 0880:         # Add the layer renderers
+0881:         blockRenderers.extend(brs)
  __pyx_t_18 = __Pyx_PyList_Extend(__pyx_cur_scope->__pyx_v_blockRenderers, __pyx_cur_scope->__pyx_v_brs); if (unlikely(__pyx_t_18 == -1)) __PYX_ERR(0, 881, __pyx_L1_error)
+0882:         cr.blockRenderers = blockRenderers
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_blockRenderers, __pyx_cur_scope->__pyx_v_blockRenderers) < 0) __PYX_ERR(0, 882, __pyx_L1_error)
 0883: 
+0884:         cr.vertexArraysDone()
  __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_vertexArraysDone); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __pyx_t_15 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_17))) {
    __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_17);
    if (likely(__pyx_t_15)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
      __Pyx_INCREF(__pyx_t_15);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_17, function);
    }
  }
  if (__pyx_t_15) {
    __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 884, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  } else {
    __pyx_t_16 = __Pyx_PyObject_CallNoArg(__pyx_t_17); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 884, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_16);
  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+0885:         raise StopIteration
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 885, __pyx_L1_error)
 0886: 
+0887:     @staticmethod
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
  __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_12, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getNeighboringChunks, __pyx_t_11) < 0) __PYX_ERR(0, 888, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+0888:     def getNeighboringChunks(chunk):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_10getNeighboringChunks(PyObject *__pyx_self, PyObject *__pyx_v_chunk); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_10getNeighboringChunks = {"getNeighboringChunks", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_10getNeighboringChunks, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_10getNeighboringChunks(PyObject *__pyx_self, PyObject *__pyx_v_chunk) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNeighboringChunks (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_9getNeighboringChunks(__pyx_self, ((PyObject *)__pyx_v_chunk));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_9getNeighboringChunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_chunk) {
  PyObject *__pyx_v_cx = NULL;
  PyObject *__pyx_v_cz = NULL;
  PyObject *__pyx_v_level = NULL;
  PyObject *__pyx_v_neighboringChunks = NULL;
  PyObject *__pyx_v_ZeroChunk = NULL;
  PyObject *__pyx_v_dir = NULL;
  PyObject *__pyx_v_dx = NULL;
  PyObject *__pyx_v_dz = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNeighboringChunks", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("_renderer.ChunkCalculator.getNeighboringChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cx);
  __Pyx_XDECREF(__pyx_v_cz);
  __Pyx_XDECREF(__pyx_v_level);
  __Pyx_XDECREF(__pyx_v_neighboringChunks);
  __Pyx_XDECREF(__pyx_v_ZeroChunk);
  __Pyx_XDECREF(__pyx_v_dir);
  __Pyx_XDECREF(__pyx_v_dx);
  __Pyx_XDECREF(__pyx_v_dz);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__636 = PyTuple_Pack(9, __pyx_n_s_chunk, __pyx_n_s_cx, __pyx_n_s_cz, __pyx_n_s_level, __pyx_n_s_neighboringChunks, __pyx_n_s_ZeroChunk, __pyx_n_s_dir, __pyx_n_s_dx, __pyx_n_s_dz); if (unlikely(!__pyx_tuple__636)) __PYX_ERR(0, 888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__636);
  __Pyx_GIVEREF(__pyx_tuple__636);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_10getNeighboringChunks, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_ChunkCalculator_getNeighboringCh, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__637)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_codeobj__637 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getNeighboringChunks, 888, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__637)) __PYX_ERR(0, 888, __pyx_L1_error)
+0889:         cx, cz = chunk.chunkPosition
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 889, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 889, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 889, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 889, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 889, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 889, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_cx = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_cz = __pyx_t_3;
  __pyx_t_3 = 0;
+0890:         level = chunk.world
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_world); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_level = __pyx_t_1;
  __pyx_t_1 = 0;
 0891: 
+0892:         neighboringChunks = {}
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_neighboringChunks = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0893:         ZeroChunk = pymclevel.infiniteworld.ZeroChunk
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_infiniteworld); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ZeroChunk); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_ZeroChunk = __pyx_t_1;
  __pyx_t_1 = 0;
+0894:         for dir, dx, dz in ((pymclevel.faces.FaceXDecreasing, -1, 0),
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_neg_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_int_0);
  __pyx_t_1 = 0;
/* … */
  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_6);
  __pyx_t_3 = 0;
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (__pyx_t_7 >= 4) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 894, __pyx_L1_error)
    #else
    __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    if (likely(__pyx_t_1 != Py_None)) {
      PyObject* sequence = __pyx_t_1;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 894, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); 
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 894, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 894, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 894, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 894, __pyx_L1_error)
    }
    __Pyx_XDECREF_SET(__pyx_v_dir, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_XDECREF_SET(__pyx_v_dx, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_XDECREF_SET(__pyx_v_dz, __pyx_t_3);
    __pyx_t_3 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0895:                             (pymclevel.faces.FaceXIncreasing, 1, 0),
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_int_0);
  __pyx_t_1 = 0;
+0896:                             (pymclevel.faces.FaceZDecreasing, 0, -1),
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_neg_1);
  __pyx_t_1 = 0;
+0897:                             (pymclevel.faces.FaceZIncreasing, 0, 1)):
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_int_1);
  __pyx_t_1 = 0;
+0898:             if not level.containsChunk(cx + dx, cz + dz):
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_level, __pyx_n_s_containsChunk); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyNumber_Add(__pyx_v_cx, __pyx_v_dx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyNumber_Add(__pyx_v_cz, __pyx_v_dz); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_4);
    __pyx_t_2 = 0;
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 898, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_12 = ((!__pyx_t_11) != 0);
    if (__pyx_t_12) {
/* … */
      goto __pyx_L7;
    }
+0899:                 neighboringChunks[dir] = ZeroChunk(level.Height)
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_level, __pyx_n_s_Height); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_ZeroChunk);
      __pyx_t_10 = __pyx_v_ZeroChunk; __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 899, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(PyDict_SetItem(__pyx_v_neighboringChunks, __pyx_v_dir, __pyx_t_1) < 0)) __PYX_ERR(0, 899, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0900:             else:
+0901:                 try:
    /*else*/ {
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        goto __pyx_L15_try_end;
        __pyx_L8_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        __pyx_L15_try_end:;
      }
    }
    __pyx_L7:;
+0902:                     neighboringChunks[dir] = level.getChunk(cx + dx, cz + dz)
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_level, __pyx_n_s_getChunk); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 902, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_2 = PyNumber_Add(__pyx_v_cx, __pyx_v_dx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 902, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_3 = PyNumber_Add(__pyx_v_cz, __pyx_v_dz); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 902, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_4 = NULL;
          __pyx_t_9 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_10, function);
              __pyx_t_9 = 1;
            }
          }
          __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 902, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_8);
          if (__pyx_t_4) {
            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_2);
          PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_3);
          PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_3);
          __pyx_t_2 = 0;
          __pyx_t_3 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(PyDict_SetItem(__pyx_v_neighboringChunks, __pyx_v_dir, __pyx_t_1) < 0)) __PYX_ERR(0, 902, __pyx_L8_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0903:                 except (EnvironmentError, pymclevel.mclevelbase.ChunkNotPresent, pymclevel.mclevelbase.ChunkMalformed):
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 903, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_mclevelbase); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 903, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ChunkNotPresent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 903, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 903, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_mclevelbase); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 903, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ChunkMalformed); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 903, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_EnvironmentError) || __Pyx_PyErr_ExceptionMatches(__pyx_t_1) || __Pyx_PyErr_ExceptionMatches(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (__pyx_t_16) {
          __Pyx_AddTraceback("_renderer.ChunkCalculator.getNeighboringChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_1, &__pyx_t_8) < 0) __PYX_ERR(0, 903, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_8);
+0904:                     neighboringChunks[dir] = ZeroChunk(level.Height)
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_level, __pyx_n_s_Height); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 904, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_INCREF(__pyx_v_ZeroChunk);
          __pyx_t_4 = __pyx_v_ZeroChunk; __pyx_t_17 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_17)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_17);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_17) {
            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 904, __pyx_L10_except_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_GOTREF(__pyx_t_3);
          } else {
            __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 904, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_18);
            __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL;
            __Pyx_GIVEREF(__pyx_t_2);
            PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_2);
            __pyx_t_2 = 0;
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 904, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(PyDict_SetItem(__pyx_v_neighboringChunks, __pyx_v_dir, __pyx_t_3) < 0)) __PYX_ERR(0, 904, __pyx_L10_except_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L9_exception_handled;
        }
        goto __pyx_L10_except_error;
        __pyx_L10_except_error:;
+0905:         return neighboringChunks
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_neighboringChunks);
  __pyx_r = __pyx_v_neighboringChunks;
  goto __pyx_L0;
 0906: 
+0907:     @staticmethod
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
  __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_12, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getAreaBlocks, __pyx_t_11) < 0) __PYX_ERR(0, 908, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+0908:     def getAreaBlocks(chunk, neighboringChunks):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_12getAreaBlocks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_12getAreaBlocks = {"getAreaBlocks", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_12getAreaBlocks, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_12getAreaBlocks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_chunk = 0;
  PyObject *__pyx_v_neighboringChunks = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getAreaBlocks (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_chunk,&__pyx_n_s_neighboringChunks,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_neighboringChunks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getAreaBlocks", 1, 2, 2, 1); __PYX_ERR(0, 908, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getAreaBlocks") < 0)) __PYX_ERR(0, 908, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_chunk = values[0];
    __pyx_v_neighboringChunks = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getAreaBlocks", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 908, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.getAreaBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_11getAreaBlocks(__pyx_self, __pyx_v_chunk, __pyx_v_neighboringChunks);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_11getAreaBlocks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_chunk, PyObject *__pyx_v_neighboringChunks) {
  PyObject *__pyx_v_chunkWidth = NULL;
  PyObject *__pyx_v_chunkLength = NULL;
  PyObject *__pyx_v_chunkHeight = NULL;
  PyObject *__pyx_v_areaBlocks = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getAreaBlocks", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.ChunkCalculator.getAreaBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_chunkWidth);
  __Pyx_XDECREF(__pyx_v_chunkLength);
  __Pyx_XDECREF(__pyx_v_chunkHeight);
  __Pyx_XDECREF(__pyx_v_areaBlocks);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__638 = PyTuple_Pack(6, __pyx_n_s_chunk, __pyx_n_s_neighboringChunks, __pyx_n_s_chunkWidth, __pyx_n_s_chunkLength, __pyx_n_s_chunkHeight, __pyx_n_s_areaBlocks); if (unlikely(!__pyx_tuple__638)) __PYX_ERR(0, 908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__638);
  __Pyx_GIVEREF(__pyx_tuple__638);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_12getAreaBlocks, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_ChunkCalculator_getAreaBlocks, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__639)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_codeobj__639 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__638, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getAreaBlocks, 908, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__639)) __PYX_ERR(0, 908, __pyx_L1_error)
+0909:         chunkWidth, chunkLength, chunkHeight = chunk.Blocks.shape
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_Blocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
    PyObject* sequence = __pyx_t_2;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 909, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
    index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 909, __pyx_L1_error)
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 909, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_chunkWidth = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_chunkLength = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_chunkHeight = __pyx_t_4;
  __pyx_t_4 = 0;
 0910: 
+0911:         areaBlocks = numpy.zeros((chunkWidth + 2, chunkLength + 2, chunkHeight + 2), numpy.uint16)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_chunkWidth, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_chunkLength, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_v_chunkHeight, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_1);
  __pyx_t_7 = 0;
  __pyx_t_1 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_areaBlocks = __pyx_t_2;
  __pyx_t_2 = 0;
+0912:         areaBlocks[1:-1, 1:-1, 1:-1] = chunk.Blocks
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_Blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
/* … */
  __pyx_slice__56 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__56)) __PYX_ERR(0, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__56);
  __Pyx_GIVEREF(__pyx_slice__56);
  __pyx_slice__57 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__57)) __PYX_ERR(0, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__57);
  __Pyx_GIVEREF(__pyx_slice__57);
  __pyx_slice__58 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__58)) __PYX_ERR(0, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__58);
  __Pyx_GIVEREF(__pyx_slice__58);
  if (unlikely(PyObject_SetItem(__pyx_v_areaBlocks, __pyx_tuple__59, __pyx_t_2) < 0)) __PYX_ERR(0, 912, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__59 = PyTuple_Pack(3, __pyx_slice__56, __pyx_slice__57, __pyx_slice__58); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);
+0913:         areaBlocks[:1, 1:-1, 1:-1] = neighboringChunks[pymclevel.faces.FaceXDecreasing].Blocks[-1:, :chunkLength,
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_4 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
/* … */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_slice__60);
  __Pyx_GIVEREF(__pyx_slice__60);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_slice__60);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_slice__60 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__60)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__60);
  __Pyx_GIVEREF(__pyx_slice__60);
  __pyx_slice__61 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__61)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__61);
  __Pyx_GIVEREF(__pyx_slice__61);
  __pyx_slice__62 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__62)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__62);
  __Pyx_GIVEREF(__pyx_slice__62);
  __pyx_slice__63 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__63)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__63);
  __Pyx_GIVEREF(__pyx_slice__63);
  if (unlikely(PyObject_SetItem(__pyx_v_areaBlocks, __pyx_tuple__64, __pyx_t_4) < 0)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__64 = PyTuple_Pack(3, __pyx_slice__61, __pyx_slice__62, __pyx_slice__63); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__64);
  __Pyx_GIVEREF(__pyx_tuple__64);
 0914:                                      :chunkHeight]
+0915:         areaBlocks[-1:, 1:-1, 1:-1] = neighboringChunks[pymclevel.faces.FaceXIncreasing].Blocks[:1, :chunkLength,
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Blocks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
/* … */
  __pyx_t_2 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
/* … */
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_slice__65);
  __Pyx_GIVEREF(__pyx_slice__65);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_slice__65);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__65 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__65)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__65);
  __Pyx_GIVEREF(__pyx_slice__65);
  __pyx_slice__66 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__66)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__66);
  __Pyx_GIVEREF(__pyx_slice__66);
  __pyx_slice__67 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__67)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__67);
  __Pyx_GIVEREF(__pyx_slice__67);
  __pyx_slice__68 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__68)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__68);
  __Pyx_GIVEREF(__pyx_slice__68);
  if (unlikely(PyObject_SetItem(__pyx_v_areaBlocks, __pyx_tuple__69, __pyx_t_2) < 0)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__69 = PyTuple_Pack(3, __pyx_slice__66, __pyx_slice__67, __pyx_slice__68); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__69);
  __Pyx_GIVEREF(__pyx_tuple__69);
 0916:                                       :chunkHeight]
+0917:         areaBlocks[1:-1, :1, 1:-1] = neighboringChunks[pymclevel.faces.FaceZDecreasing].Blocks[:chunkWidth, -1:,
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_4 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
/* … */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
  __Pyx_INCREF(__pyx_slice__70);
  __Pyx_GIVEREF(__pyx_slice__70);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_slice__70);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_slice__70 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__70)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__70);
  __Pyx_GIVEREF(__pyx_slice__70);
  __pyx_slice__71 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__71)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__71);
  __Pyx_GIVEREF(__pyx_slice__71);
  __pyx_slice__72 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__72)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__72);
  __Pyx_GIVEREF(__pyx_slice__72);
  __pyx_slice__73 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__73)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__73);
  __Pyx_GIVEREF(__pyx_slice__73);
  if (unlikely(PyObject_SetItem(__pyx_v_areaBlocks, __pyx_tuple__74, __pyx_t_4) < 0)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__74 = PyTuple_Pack(3, __pyx_slice__71, __pyx_slice__72, __pyx_slice__73); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__74);
  __Pyx_GIVEREF(__pyx_tuple__74);
 0918:                                      :chunkHeight]
+0919:         areaBlocks[1:-1, -1:, 1:-1] = neighboringChunks[pymclevel.faces.FaceZIncreasing].Blocks[:chunkWidth, :1,
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Blocks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
/* … */
  __pyx_t_2 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
/* … */
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_slice__75);
  __Pyx_GIVEREF(__pyx_slice__75);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__75);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__75 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__75)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__75);
  __Pyx_GIVEREF(__pyx_slice__75);
  __pyx_slice__76 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__76)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__76);
  __Pyx_GIVEREF(__pyx_slice__76);
  __pyx_slice__77 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__77)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__77);
  __Pyx_GIVEREF(__pyx_slice__77);
  __pyx_slice__78 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__78)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__78);
  __Pyx_GIVEREF(__pyx_slice__78);
  if (unlikely(PyObject_SetItem(__pyx_v_areaBlocks, __pyx_tuple__79, __pyx_t_2) < 0)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__79 = PyTuple_Pack(3, __pyx_slice__76, __pyx_slice__77, __pyx_slice__78); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__79);
  __Pyx_GIVEREF(__pyx_tuple__79);
 0920:                                       :chunkHeight]
+0921:         return areaBlocks
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_areaBlocks);
  __pyx_r = __pyx_v_areaBlocks;
  goto __pyx_L0;
 0922: 
+0923:     @staticmethod
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
  __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_12, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getFacingBlockIndices, __pyx_t_11) < 0) __PYX_ERR(0, 924, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+0924:     def getFacingBlockIndices(areaBlocks, areaBlockMats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_14getFacingBlockIndices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_14getFacingBlockIndices = {"getFacingBlockIndices", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_14getFacingBlockIndices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_14getFacingBlockIndices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_areaBlocks = 0;
  PyObject *__pyx_v_areaBlockMats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getFacingBlockIndices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_areaBlocks,&__pyx_n_s_areaBlockMats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlocks)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockMats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getFacingBlockIndices", 1, 2, 2, 1); __PYX_ERR(0, 924, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getFacingBlockIndices") < 0)) __PYX_ERR(0, 924, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_areaBlocks = values[0];
    __pyx_v_areaBlockMats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getFacingBlockIndices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 924, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.getFacingBlockIndices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_13getFacingBlockIndices(__pyx_self, __pyx_v_areaBlocks, __pyx_v_areaBlockMats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_13getFacingBlockIndices(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_areaBlocks, PyObject *__pyx_v_areaBlockMats) {
  PyObject *__pyx_v_facingBlockIndices = NULL;
  PyObject *__pyx_v_exposedFacesX = NULL;
  PyObject *__pyx_v_exposedFacesZ = NULL;
  PyObject *__pyx_v_exposedFacesY = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getFacingBlockIndices", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.ChunkCalculator.getFacingBlockIndices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_facingBlockIndices);
  __Pyx_XDECREF(__pyx_v_exposedFacesX);
  __Pyx_XDECREF(__pyx_v_exposedFacesZ);
  __Pyx_XDECREF(__pyx_v_exposedFacesY);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__640 = PyTuple_Pack(6, __pyx_n_s_areaBlocks, __pyx_n_s_areaBlockMats, __pyx_n_s_facingBlockIndices, __pyx_n_s_exposedFacesX, __pyx_n_s_exposedFacesZ, __pyx_n_s_exposedFacesY); if (unlikely(!__pyx_tuple__640)) __PYX_ERR(0, 924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__640);
  __Pyx_GIVEREF(__pyx_tuple__640);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_14getFacingBlockIndices, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_ChunkCalculator_getFacingBlockIn, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__641)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_codeobj__641 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__640, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getFacingBlockIndices, 924, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__641)) __PYX_ERR(0, 924, __pyx_L1_error)
+0925:         facingBlockIndices = [None] * 6
  __pyx_t_1 = PyList_New(1 * 6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 6; __pyx_temp++) {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      PyList_SET_ITEM(__pyx_t_1, __pyx_temp, Py_None);
    }
  }
  __pyx_v_facingBlockIndices = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 0926: 
+0927:         exposedFacesX = (areaBlockMats[:-1, 1:-1, 1:-1] != areaBlockMats[1:, 1:-1, 1:-1])
  __pyx_slice__80 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__80)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__80);
  __Pyx_GIVEREF(__pyx_slice__80);
  __pyx_slice__81 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__81)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__81);
  __Pyx_GIVEREF(__pyx_slice__81);
  __pyx_slice__82 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__82)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__82);
  __Pyx_GIVEREF(__pyx_slice__82);
/* … */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_areaBlockMats, __pyx_tuple__83); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_tuple__83 = PyTuple_Pack(3, __pyx_slice__80, __pyx_slice__81, __pyx_slice__82); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__83);
  __Pyx_GIVEREF(__pyx_tuple__83);
  __pyx_slice__84 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__84)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__84);
  __Pyx_GIVEREF(__pyx_slice__84);
  __pyx_slice__85 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__85)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__85);
  __Pyx_GIVEREF(__pyx_slice__85);
  __pyx_slice__86 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__86)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__86);
  __Pyx_GIVEREF(__pyx_slice__86);
  __pyx_t_2 = PyObject_GetItem(__pyx_v_areaBlockMats, __pyx_tuple__87); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_exposedFacesX = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_tuple__87 = PyTuple_Pack(3, __pyx_slice__84, __pyx_slice__85, __pyx_slice__86); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__87);
  __Pyx_GIVEREF(__pyx_tuple__87);
 0928: 
+0929:         facingBlockIndices[pymclevel.faces.FaceXDecreasing] = exposedFacesX[:-1]
  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_exposedFacesX, 0, -1L, NULL, NULL, &__pyx_slice__88, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_facingBlockIndices, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 929, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__88 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__88)) __PYX_ERR(0, 929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__88);
  __Pyx_GIVEREF(__pyx_slice__88);
+0930:         facingBlockIndices[pymclevel.faces.FaceXIncreasing] = exposedFacesX[1:]
  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_exposedFacesX, 1, 0, NULL, NULL, &__pyx_slice__89, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_facingBlockIndices, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 930, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__89 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__89)) __PYX_ERR(0, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__89);
  __Pyx_GIVEREF(__pyx_slice__89);
 0931: 
+0932:         exposedFacesZ = (areaBlockMats[1:-1, :-1, 1:-1] != areaBlockMats[1:-1, 1:, 1:-1])
  __pyx_slice__90 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__90)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__90);
  __Pyx_GIVEREF(__pyx_slice__90);
  __pyx_slice__91 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__91)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__91);
  __Pyx_GIVEREF(__pyx_slice__91);
  __pyx_slice__92 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__92)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__92);
  __Pyx_GIVEREF(__pyx_slice__92);
/* … */
  __pyx_t_3 = PyObject_GetItem(__pyx_v_areaBlockMats, __pyx_tuple__93); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_tuple__93 = PyTuple_Pack(3, __pyx_slice__90, __pyx_slice__91, __pyx_slice__92); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__93);
  __Pyx_GIVEREF(__pyx_tuple__93);
  __pyx_slice__94 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__94)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__94);
  __Pyx_GIVEREF(__pyx_slice__94);
  __pyx_slice__95 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__95)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__95);
  __Pyx_GIVEREF(__pyx_slice__95);
  __pyx_slice__96 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__96)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__96);
  __Pyx_GIVEREF(__pyx_slice__96);
  __pyx_t_2 = PyObject_GetItem(__pyx_v_areaBlockMats, __pyx_tuple__97); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_exposedFacesZ = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_tuple__97 = PyTuple_Pack(3, __pyx_slice__94, __pyx_slice__95, __pyx_slice__96); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__97);
  __Pyx_GIVEREF(__pyx_tuple__97);
 0933: 
+0934:         facingBlockIndices[pymclevel.faces.FaceZDecreasing] = exposedFacesZ[:, :-1]
  __pyx_slice__98 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__98)) __PYX_ERR(0, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__98);
  __Pyx_GIVEREF(__pyx_slice__98);
  __pyx_slice__99 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__99)) __PYX_ERR(0, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__99);
  __Pyx_GIVEREF(__pyx_slice__99);
/* … */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_exposedFacesZ, __pyx_tuple__100); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_facingBlockIndices, __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 934, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__100 = PyTuple_Pack(2, __pyx_slice__98, __pyx_slice__99); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__100);
  __Pyx_GIVEREF(__pyx_tuple__100);
+0935:         facingBlockIndices[pymclevel.faces.FaceZIncreasing] = exposedFacesZ[:, 1:]
  __pyx_slice__101 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__101)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__101);
  __Pyx_GIVEREF(__pyx_slice__101);
  __pyx_slice__102 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__102)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__102);
  __Pyx_GIVEREF(__pyx_slice__102);
/* … */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_exposedFacesZ, __pyx_tuple__103); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_facingBlockIndices, __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__103 = PyTuple_Pack(2, __pyx_slice__101, __pyx_slice__102); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__103);
  __Pyx_GIVEREF(__pyx_tuple__103);
 0936: 
+0937:         exposedFacesY = (areaBlockMats[1:-1, 1:-1, :-1] != areaBlockMats[1:-1, 1:-1, 1:])
  __pyx_slice__104 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__104)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__104);
  __Pyx_GIVEREF(__pyx_slice__104);
  __pyx_slice__105 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__105)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__105);
  __Pyx_GIVEREF(__pyx_slice__105);
  __pyx_slice__106 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__106)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__106);
  __Pyx_GIVEREF(__pyx_slice__106);
/* … */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_areaBlockMats, __pyx_tuple__107); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_tuple__107 = PyTuple_Pack(3, __pyx_slice__104, __pyx_slice__105, __pyx_slice__106); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__107);
  __Pyx_GIVEREF(__pyx_tuple__107);
  __pyx_slice__108 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__108)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__108);
  __Pyx_GIVEREF(__pyx_slice__108);
  __pyx_slice__109 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__109)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__109);
  __Pyx_GIVEREF(__pyx_slice__109);
  __pyx_slice__110 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__110)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__110);
  __Pyx_GIVEREF(__pyx_slice__110);
  __pyx_t_2 = PyObject_GetItem(__pyx_v_areaBlockMats, __pyx_tuple__111); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_exposedFacesY = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_tuple__111 = PyTuple_Pack(3, __pyx_slice__108, __pyx_slice__109, __pyx_slice__110); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(0, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__111);
  __Pyx_GIVEREF(__pyx_tuple__111);
 0938: 
+0939:         facingBlockIndices[pymclevel.faces.FaceYDecreasing] = exposedFacesY[:, :, :-1]
  __pyx_slice__112 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__112)) __PYX_ERR(0, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__112);
  __Pyx_GIVEREF(__pyx_slice__112);
  __pyx_slice__113 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__113)) __PYX_ERR(0, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__113);
  __Pyx_GIVEREF(__pyx_slice__113);
  __pyx_slice__114 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__114)) __PYX_ERR(0, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__114);
  __Pyx_GIVEREF(__pyx_slice__114);
/* … */
  __pyx_t_3 = PyObject_GetItem(__pyx_v_exposedFacesY, __pyx_tuple__115); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceYDecreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_facingBlockIndices, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 939, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__115 = PyTuple_Pack(3, __pyx_slice__112, __pyx_slice__113, __pyx_slice__114); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(0, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__115);
  __Pyx_GIVEREF(__pyx_tuple__115);
+0940:         facingBlockIndices[pymclevel.faces.FaceYIncreasing] = exposedFacesY[:, :, 1:]
  __pyx_slice__116 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__116)) __PYX_ERR(0, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__116);
  __Pyx_GIVEREF(__pyx_slice__116);
  __pyx_slice__117 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__117)) __PYX_ERR(0, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__117);
  __Pyx_GIVEREF(__pyx_slice__117);
  __pyx_slice__118 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__118)) __PYX_ERR(0, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__118);
  __Pyx_GIVEREF(__pyx_slice__118);
/* … */
  __pyx_t_3 = PyObject_GetItem(__pyx_v_exposedFacesY, __pyx_tuple__119); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_facingBlockIndices, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 940, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__119 = PyTuple_Pack(3, __pyx_slice__116, __pyx_slice__117, __pyx_slice__118); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(0, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__119);
  __Pyx_GIVEREF(__pyx_tuple__119);
+0941:         return facingBlockIndices
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_facingBlockIndices);
  __pyx_r = __pyx_v_facingBlockIndices;
  goto __pyx_L0;
 0942: 
+0943:     def getAreaBlockLights(self, chunk, neighboringChunks):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_16getAreaBlockLights(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_16getAreaBlockLights = {"getAreaBlockLights", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_16getAreaBlockLights, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_16getAreaBlockLights(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunk = 0;
  PyObject *__pyx_v_neighboringChunks = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getAreaBlockLights (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunk,&__pyx_n_s_neighboringChunks,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getAreaBlockLights", 1, 3, 3, 1); __PYX_ERR(0, 943, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_neighboringChunks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getAreaBlockLights", 1, 3, 3, 2); __PYX_ERR(0, 943, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getAreaBlockLights") < 0)) __PYX_ERR(0, 943, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunk = values[1];
    __pyx_v_neighboringChunks = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getAreaBlockLights", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 943, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.getAreaBlockLights", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_15getAreaBlockLights(__pyx_self, __pyx_v_self, __pyx_v_chunk, __pyx_v_neighboringChunks);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_15getAreaBlockLights(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunk, PyObject *__pyx_v_neighboringChunks) {
  PyObject *__pyx_v_chunkWidth = NULL;
  PyObject *__pyx_v_chunkLength = NULL;
  PyObject *__pyx_v_chunkHeight = NULL;
  PyObject *__pyx_v_lights = NULL;
  PyObject *__pyx_v_skyLight = NULL;
  PyObject *__pyx_v_finalLight = NULL;
  PyObject *__pyx_v_areaBlockLights = NULL;
  PyObject *__pyx_v_nc = NULL;
  PyObject *__pyx_v_fxd_skyLight = NULL;
  PyObject *__pyx_v_fxi_skyLight = NULL;
  PyObject *__pyx_v_fzd_skyLight = NULL;
  PyObject *__pyx_v_fzi_skyLight = NULL;
  PyObject *__pyx_v_fxd_blockLight = NULL;
  PyObject *__pyx_v_fxi_blockLight = NULL;
  PyObject *__pyx_v_fzd_blockLight = NULL;
  PyObject *__pyx_v_fzi_blockLight = NULL;
  long __pyx_v_minimumLight;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getAreaBlockLights", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("_renderer.ChunkCalculator.getAreaBlockLights", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_chunkWidth);
  __Pyx_XDECREF(__pyx_v_chunkLength);
  __Pyx_XDECREF(__pyx_v_chunkHeight);
  __Pyx_XDECREF(__pyx_v_lights);
  __Pyx_XDECREF(__pyx_v_skyLight);
  __Pyx_XDECREF(__pyx_v_finalLight);
  __Pyx_XDECREF(__pyx_v_areaBlockLights);
  __Pyx_XDECREF(__pyx_v_nc);
  __Pyx_XDECREF(__pyx_v_fxd_skyLight);
  __Pyx_XDECREF(__pyx_v_fxi_skyLight);
  __Pyx_XDECREF(__pyx_v_fzd_skyLight);
  __Pyx_XDECREF(__pyx_v_fzi_skyLight);
  __Pyx_XDECREF(__pyx_v_fxd_blockLight);
  __Pyx_XDECREF(__pyx_v_fxi_blockLight);
  __Pyx_XDECREF(__pyx_v_fzd_blockLight);
  __Pyx_XDECREF(__pyx_v_fzi_blockLight);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_19generator2(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__642 = PyTuple_Pack(20, __pyx_n_s_self, __pyx_n_s_chunk, __pyx_n_s_neighboringChunks, __pyx_n_s_chunkWidth, __pyx_n_s_chunkLength, __pyx_n_s_chunkHeight, __pyx_n_s_lights, __pyx_n_s_skyLight, __pyx_n_s_finalLight, __pyx_n_s_areaBlockLights, __pyx_n_s_nc, __pyx_n_s_fxd_skyLight, __pyx_n_s_fxi_skyLight, __pyx_n_s_fzd_skyLight, __pyx_n_s_fzi_skyLight, __pyx_n_s_fxd_blockLight, __pyx_n_s_fxi_blockLight, __pyx_n_s_fzd_blockLight, __pyx_n_s_fzi_blockLight, __pyx_n_s_minimumLight); if (unlikely(!__pyx_tuple__642)) __PYX_ERR(0, 943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__642);
  __Pyx_GIVEREF(__pyx_tuple__642);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_16getAreaBlockLights, 0, __pyx_n_s_ChunkCalculator_getAreaBlockLigh, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__643)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getAreaBlockLights, __pyx_t_11) < 0) __PYX_ERR(0, 943, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_codeobj__643 = (PyObject*)__Pyx_PyCode_New(3, 0, 20, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__642, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getAreaBlockLights, 943, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__643)) __PYX_ERR(0, 943, __pyx_L1_error)
+0944:         chunkWidth, chunkLength, chunkHeight = chunk.Blocks.shape
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_Blocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
    PyObject* sequence = __pyx_t_2;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 944, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
    index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 944, __pyx_L1_error)
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 944, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_chunkWidth = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_chunkLength = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_chunkHeight = __pyx_t_4;
  __pyx_t_4 = 0;
+0945:         lights = chunk.BlockLight
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_BlockLight); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_lights = __pyx_t_2;
  __pyx_t_2 = 0;
+0946:         skyLight = chunk.SkyLight
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_SkyLight); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_skyLight = __pyx_t_2;
  __pyx_t_2 = 0;
+0947:         finalLight = self.whiteLight
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_whiteLight); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_finalLight = __pyx_t_2;
  __pyx_t_2 = 0;
 0948: 
+0949:         if lights is not None:
  __pyx_t_7 = (__pyx_v_lights != Py_None);
  __pyx_t_8 = (__pyx_t_7 != 0);
  if (__pyx_t_8) {
/* … */
  }
+0950:             finalLight = lights
    __Pyx_INCREF(__pyx_v_lights);
    __Pyx_DECREF_SET(__pyx_v_finalLight, __pyx_v_lights);
+0951:         if skyLight is not None:
  __pyx_t_8 = (__pyx_v_skyLight != Py_None);
  __pyx_t_7 = (__pyx_t_8 != 0);
  if (__pyx_t_7) {
/* … */
  }
+0952:             finalLight = numpy.maximum(skyLight, lights)
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_maximum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_1 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_v_skyLight);
    __Pyx_GIVEREF(__pyx_v_skyLight);
    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_9, __pyx_v_skyLight);
    __Pyx_INCREF(__pyx_v_lights);
    __Pyx_GIVEREF(__pyx_v_lights);
    PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_9, __pyx_v_lights);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_finalLight, __pyx_t_2);
    __pyx_t_2 = 0;
 0953: 
+0954:         areaBlockLights = numpy.ones((chunkWidth + 2, chunkLength + 2, chunkHeight + 2), numpy.uint8)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_chunkWidth, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_chunkLength, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_v_chunkHeight, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_5);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_uint8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_3 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_9, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_9, __pyx_t_4);
  __pyx_t_10 = 0;
  __pyx_t_4 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_areaBlockLights = __pyx_t_2;
  __pyx_t_2 = 0;
+0955:         areaBlockLights[:] = 15
  if (__Pyx_PyObject_SetSlice(__pyx_v_areaBlockLights, __pyx_int_15, 0, 0, NULL, NULL, &__pyx_slice__120, 0, 0, 1) < 0) __PYX_ERR(0, 955, __pyx_L1_error)
/* … */
  __pyx_slice__120 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__120)) __PYX_ERR(0, 955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__120);
  __Pyx_GIVEREF(__pyx_slice__120);
 0956: 
+0957:         areaBlockLights[1:-1, 1:-1, 1:-1] = finalLight
  __pyx_slice__121 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__121)) __PYX_ERR(0, 957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__121);
  __Pyx_GIVEREF(__pyx_slice__121);
  __pyx_slice__122 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__122)) __PYX_ERR(0, 957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__122);
  __Pyx_GIVEREF(__pyx_slice__122);
  __pyx_slice__123 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__123)) __PYX_ERR(0, 957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__123);
  __Pyx_GIVEREF(__pyx_slice__123);
/* … */
  if (unlikely(PyObject_SetItem(__pyx_v_areaBlockLights, __pyx_tuple__124, __pyx_v_finalLight) < 0)) __PYX_ERR(0, 957, __pyx_L1_error)
  __pyx_tuple__124 = PyTuple_Pack(3, __pyx_slice__121, __pyx_slice__122, __pyx_slice__123); if (unlikely(!__pyx_tuple__124)) __PYX_ERR(0, 957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__124);
  __Pyx_GIVEREF(__pyx_tuple__124);
 0958: 
+0959:         nc = neighboringChunks[pymclevel.faces.FaceXDecreasing]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_nc = __pyx_t_1;
  __pyx_t_1 = 0;
+0960:         numpy.maximum(nc.SkyLight[-1:, :chunkLength, :chunkHeight],
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maximum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_nc, __pyx_n_s_SkyLight); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_slice__125);
  __Pyx_GIVEREF(__pyx_slice__125);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_slice__125);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_10);
  __pyx_t_4 = 0;
  __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetItem(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
  __pyx_slice__125 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__125)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__125);
  __Pyx_GIVEREF(__pyx_slice__125);
+0961:                       nc.BlockLight[-1:, :chunkLength, :chunkHeight],
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_nc, __pyx_n_s_BlockLight); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(__pyx_slice__126);
  __Pyx_GIVEREF(__pyx_slice__126);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_slice__126);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
  __pyx_slice__126 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__126)) __PYX_ERR(0, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__126);
  __Pyx_GIVEREF(__pyx_slice__126);
+0962:                       areaBlockLights[0:1, 1:-1, 1:-1])
  __pyx_slice__127 = PySlice_New(__pyx_int_0, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__127)) __PYX_ERR(0, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__127);
  __Pyx_GIVEREF(__pyx_slice__127);
  __pyx_slice__128 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__128)) __PYX_ERR(0, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__128);
  __Pyx_GIVEREF(__pyx_slice__128);
  __pyx_slice__129 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__129)) __PYX_ERR(0, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__129);
  __Pyx_GIVEREF(__pyx_slice__129);
/* … */
  __pyx_t_11 = PyObject_GetItem(__pyx_v_areaBlockLights, __pyx_tuple__130); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_9, __pyx_t_11);
  __pyx_t_10 = 0;
  __pyx_t_4 = 0;
  __pyx_t_11 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__130 = PyTuple_Pack(3, __pyx_slice__127, __pyx_slice__128, __pyx_slice__129); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(0, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__130);
  __Pyx_GIVEREF(__pyx_tuple__130);
 0963: 
+0964:         nc = neighboringChunks[pymclevel.faces.FaceXIncreasing]
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_nc, __pyx_t_3);
  __pyx_t_3 = 0;
+0965:         numpy.maximum(nc.SkyLight[:1, :chunkLength, :chunkHeight],
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_maximum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_nc, __pyx_n_s_SkyLight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_slice__131);
  __Pyx_GIVEREF(__pyx_slice__131);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_slice__131);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_4);
  __pyx_t_11 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_slice__131 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__131)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__131);
  __Pyx_GIVEREF(__pyx_slice__131);
+0966:                       nc.BlockLight[:1, :chunkLength, :chunkHeight],
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_nc, __pyx_n_s_BlockLight); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_1 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_slice__132);
  __Pyx_GIVEREF(__pyx_slice__132);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_slice__132);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_11);
  __pyx_t_1 = 0;
  __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetItem(__pyx_t_10, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
  __pyx_slice__132 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__132)) __PYX_ERR(0, 966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__132);
  __Pyx_GIVEREF(__pyx_slice__132);
+0967:                       areaBlockLights[-1:, 1:-1, 1:-1])
  __pyx_slice__133 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__133)) __PYX_ERR(0, 967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__133);
  __Pyx_GIVEREF(__pyx_slice__133);
  __pyx_slice__134 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__134)) __PYX_ERR(0, 967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__134);
  __Pyx_GIVEREF(__pyx_slice__134);
  __pyx_slice__135 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__135)) __PYX_ERR(0, 967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__135);
  __Pyx_GIVEREF(__pyx_slice__135);
/* … */
  __pyx_t_5 = PyObject_GetItem(__pyx_v_areaBlockLights, __pyx_tuple__136); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_10)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_1 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__pyx_t_10) {
    __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10); __pyx_t_10 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_9, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_9, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_9, __pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_11 = 0;
  __pyx_t_5 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__136 = PyTuple_Pack(3, __pyx_slice__133, __pyx_slice__134, __pyx_slice__135); if (unlikely(!__pyx_tuple__136)) __PYX_ERR(0, 967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__136);
  __Pyx_GIVEREF(__pyx_tuple__136);
 0968: 
+0969:         nc = neighboringChunks[pymclevel.faces.FaceZDecreasing]
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF_SET(__pyx_v_nc, __pyx_t_2);
  __pyx_t_2 = 0;
+0970:         numpy.maximum(nc.SkyLight[:chunkWidth, -1:, :chunkHeight],
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maximum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_nc, __pyx_n_s_SkyLight); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_slice__137);
  __Pyx_GIVEREF(__pyx_slice__137);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_slice__137);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_11);
  __pyx_t_5 = 0;
  __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__137 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__137)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__137);
  __Pyx_GIVEREF(__pyx_slice__137);
+0971:                       nc.BlockLight[:chunkWidth, -1:, :chunkHeight],
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nc, __pyx_n_s_BlockLight); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
  __Pyx_INCREF(__pyx_slice__138);
  __Pyx_GIVEREF(__pyx_slice__138);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_slice__138);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_5);
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_slice__138 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__138)) __PYX_ERR(0, 971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__138);
  __Pyx_GIVEREF(__pyx_slice__138);
+0972:                       areaBlockLights[1:-1, 0:1, 1:-1])
  __pyx_slice__139 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__139)) __PYX_ERR(0, 972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__139);
  __Pyx_GIVEREF(__pyx_slice__139);
  __pyx_slice__140 = PySlice_New(__pyx_int_0, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__140)) __PYX_ERR(0, 972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__140);
  __Pyx_GIVEREF(__pyx_slice__140);
  __pyx_slice__141 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__141)) __PYX_ERR(0, 972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__141);
  __Pyx_GIVEREF(__pyx_slice__141);
/* … */
  __pyx_t_10 = PyObject_GetItem(__pyx_v_areaBlockLights, __pyx_tuple__142); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_3 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_9, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_9, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_9, __pyx_t_10);
  __pyx_t_11 = 0;
  __pyx_t_5 = 0;
  __pyx_t_10 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__142 = PyTuple_Pack(3, __pyx_slice__139, __pyx_slice__140, __pyx_slice__141); if (unlikely(!__pyx_tuple__142)) __PYX_ERR(0, 972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__142);
  __Pyx_GIVEREF(__pyx_tuple__142);
 0973: 
+0974:         nc = neighboringChunks[pymclevel.faces.FaceZIncreasing]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_nc, __pyx_t_1);
  __pyx_t_1 = 0;
+0975:         numpy.maximum(nc.SkyLight[:chunkWidth, :1, :chunkHeight],
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maximum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_nc, __pyx_n_s_SkyLight); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_5 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10);
  __Pyx_INCREF(__pyx_slice__143);
  __Pyx_GIVEREF(__pyx_slice__143);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_slice__143);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_5);
  __pyx_t_10 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
  __pyx_slice__143 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__143)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__143);
  __Pyx_GIVEREF(__pyx_slice__143);
+0976:                       nc.BlockLight[:chunkWidth, :1, :chunkHeight],
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_nc, __pyx_n_s_BlockLight); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_2 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_slice__144);
  __Pyx_GIVEREF(__pyx_slice__144);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_slice__144);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_10);
  __pyx_t_2 = 0;
  __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetItem(__pyx_t_11, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__144 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__144)) __PYX_ERR(0, 976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__144);
  __Pyx_GIVEREF(__pyx_slice__144);
+0977:                       areaBlockLights[1:-1, -1:, 1:-1])
  __pyx_slice__145 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__145)) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__145);
  __Pyx_GIVEREF(__pyx_slice__145);
  __pyx_slice__146 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__146)) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__146);
  __Pyx_GIVEREF(__pyx_slice__146);
  __pyx_slice__147 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__147)) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__147);
  __Pyx_GIVEREF(__pyx_slice__147);
/* … */
  __pyx_t_4 = PyObject_GetItem(__pyx_v_areaBlockLights, __pyx_tuple__148); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_11 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_11) {
    __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11); __pyx_t_11 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_9, __pyx_t_4);
  __pyx_t_5 = 0;
  __pyx_t_10 = 0;
  __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__148 = PyTuple_Pack(3, __pyx_slice__145, __pyx_slice__146, __pyx_slice__147); if (unlikely(!__pyx_tuple__148)) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__148);
  __Pyx_GIVEREF(__pyx_tuple__148);
 0978: 
+0979:         fxd_skyLight = neighboringChunks[pymclevel.faces.FaceXDecreasing].SkyLight
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_SkyLight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_fxd_skyLight = __pyx_t_1;
  __pyx_t_1 = 0;
+0980:         fxi_skyLight = neighboringChunks[pymclevel.faces.FaceXIncreasing].SkyLight
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_SkyLight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_fxi_skyLight = __pyx_t_1;
  __pyx_t_1 = 0;
+0981:         fzd_skyLight = neighboringChunks[pymclevel.faces.FaceZDecreasing].SkyLight
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_SkyLight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_fzd_skyLight = __pyx_t_1;
  __pyx_t_1 = 0;
+0982:         fzi_skyLight = neighboringChunks[pymclevel.faces.FaceZIncreasing].SkyLight
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_SkyLight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_fzi_skyLight = __pyx_t_1;
  __pyx_t_1 = 0;
+0983:         fxd_blockLight = neighboringChunks[pymclevel.faces.FaceXDecreasing].BlockLight
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BlockLight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_fxd_blockLight = __pyx_t_1;
  __pyx_t_1 = 0;
+0984:         fxi_blockLight = neighboringChunks[pymclevel.faces.FaceXIncreasing].BlockLight
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BlockLight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_fxi_blockLight = __pyx_t_1;
  __pyx_t_1 = 0;
+0985:         fzd_blockLight = neighboringChunks[pymclevel.faces.FaceZDecreasing].BlockLight
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BlockLight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_fzd_blockLight = __pyx_t_1;
  __pyx_t_1 = 0;
+0986:         fzi_blockLight = neighboringChunks[pymclevel.faces.FaceZIncreasing].BlockLight
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_neighboringChunks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BlockLight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_fzi_blockLight = __pyx_t_1;
  __pyx_t_1 = 0;
+0987:         numpy.maximum(fxd_skyLight[-1:, :chunkLength, :chunkHeight],
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maximum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_slice__149);
  __Pyx_GIVEREF(__pyx_slice__149);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_slice__149);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_v_fxd_skyLight, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_slice__149 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__149)) __PYX_ERR(0, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__149);
  __Pyx_GIVEREF(__pyx_slice__149);
+0988:                       fxd_blockLight[-1:, :chunkLength, :chunkHeight],
  __pyx_t_10 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_3 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_slice__150);
  __Pyx_GIVEREF(__pyx_slice__150);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_slice__150);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
  __pyx_t_10 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_fxd_blockLight, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
  __pyx_slice__150 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__150)) __PYX_ERR(0, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__150);
  __Pyx_GIVEREF(__pyx_slice__150);
+0989:                       areaBlockLights[0:1, 1:-1, 1:-1])
  __pyx_slice__151 = PySlice_New(__pyx_int_0, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__151)) __PYX_ERR(0, 989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__151);
  __Pyx_GIVEREF(__pyx_slice__151);
  __pyx_slice__152 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__152)) __PYX_ERR(0, 989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__152);
  __Pyx_GIVEREF(__pyx_slice__152);
  __pyx_slice__153 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__153)) __PYX_ERR(0, 989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__153);
  __Pyx_GIVEREF(__pyx_slice__153);
/* … */
  __pyx_t_5 = PyObject_GetItem(__pyx_v_areaBlockLights, __pyx_tuple__154); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_10)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_11 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__pyx_t_10) {
    __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_9, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_9, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_9, __pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__154 = PyTuple_Pack(3, __pyx_slice__151, __pyx_slice__152, __pyx_slice__153); if (unlikely(!__pyx_tuple__154)) __PYX_ERR(0, 989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__154);
  __Pyx_GIVEREF(__pyx_tuple__154);
 0990: 
+0991:         numpy.maximum(fxi_skyLight[:1, :chunkLength, :chunkHeight],
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maximum); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_slice__155);
  __Pyx_GIVEREF(__pyx_slice__155);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_slice__155);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_5);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_v_fxi_skyLight, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__155 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__155)) __PYX_ERR(0, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__155);
  __Pyx_GIVEREF(__pyx_slice__155);
+0992:                       fxi_blockLight[:1, :chunkLength, :chunkHeight],
  __pyx_t_3 = PySlice_New(Py_None, __pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_slice__156);
  __Pyx_GIVEREF(__pyx_slice__156);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_slice__156);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_v_fxi_blockLight, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__156 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__156)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__156);
  __Pyx_GIVEREF(__pyx_slice__156);
+0993:                       areaBlockLights[-1:, 1:-1, 1:-1])
  __pyx_slice__157 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__157)) __PYX_ERR(0, 993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__157);
  __Pyx_GIVEREF(__pyx_slice__157);
  __pyx_slice__158 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__158)) __PYX_ERR(0, 993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__158);
  __Pyx_GIVEREF(__pyx_slice__158);
  __pyx_slice__159 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__159)) __PYX_ERR(0, 993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__159);
  __Pyx_GIVEREF(__pyx_slice__159);
/* … */
  __pyx_t_4 = PyObject_GetItem(__pyx_v_areaBlockLights, __pyx_tuple__160); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_10 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_4);
  __pyx_t_5 = 0;
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__160 = PyTuple_Pack(3, __pyx_slice__157, __pyx_slice__158, __pyx_slice__159); if (unlikely(!__pyx_tuple__160)) __PYX_ERR(0, 993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__160);
  __Pyx_GIVEREF(__pyx_tuple__160);
 0994: 
+0995:         numpy.maximum(fzd_skyLight[:chunkWidth, -1:, :chunkHeight],
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_maximum); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11);
  __Pyx_INCREF(__pyx_slice__161);
  __Pyx_GIVEREF(__pyx_slice__161);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__161);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4);
  __pyx_t_11 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_v_fzd_skyLight, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__161 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__161)) __PYX_ERR(0, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__161);
  __Pyx_GIVEREF(__pyx_slice__161);
+0996:                       fzd_blockLight[:chunkWidth, -1:, :chunkHeight],
  __pyx_t_2 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_slice__162);
  __Pyx_GIVEREF(__pyx_slice__162);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_slice__162);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_11);
  __pyx_t_2 = 0;
  __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetItem(__pyx_v_fzd_blockLight, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
  __pyx_slice__162 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__162)) __PYX_ERR(0, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__162);
  __Pyx_GIVEREF(__pyx_slice__162);
+0997:                       areaBlockLights[1:-1, 0:1, 1:-1])
  __pyx_slice__163 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__163)) __PYX_ERR(0, 997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__163);
  __Pyx_GIVEREF(__pyx_slice__163);
  __pyx_slice__164 = PySlice_New(__pyx_int_0, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__164)) __PYX_ERR(0, 997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__164);
  __Pyx_GIVEREF(__pyx_slice__164);
  __pyx_slice__165 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__165)) __PYX_ERR(0, 997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__165);
  __Pyx_GIVEREF(__pyx_slice__165);
/* … */
  __pyx_t_5 = PyObject_GetItem(__pyx_v_areaBlockLights, __pyx_tuple__166); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_10, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_3 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_9, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_9, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_9, __pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_11 = 0;
  __pyx_t_5 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__166 = PyTuple_Pack(3, __pyx_slice__163, __pyx_slice__164, __pyx_slice__165); if (unlikely(!__pyx_tuple__166)) __PYX_ERR(0, 997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__166);
  __Pyx_GIVEREF(__pyx_tuple__166);
 0998: 
+0999:         numpy.maximum(fzi_skyLight[:chunkWidth, :1, :chunkHeight],
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_maximum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_5 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10);
  __Pyx_INCREF(__pyx_slice__167);
  __Pyx_GIVEREF(__pyx_slice__167);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_slice__167);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_5);
  __pyx_t_10 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_v_fzi_skyLight, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
  __pyx_slice__167 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__167)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__167);
  __Pyx_GIVEREF(__pyx_slice__167);
+1000:                       fzi_blockLight[:chunkWidth, :1, :chunkHeight],
  __pyx_t_11 = PySlice_New(Py_None, __pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PySlice_New(Py_None, __pyx_v_chunkHeight, Py_None); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11);
  __Pyx_INCREF(__pyx_slice__168);
  __Pyx_GIVEREF(__pyx_slice__168);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_slice__168);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_10);
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetItem(__pyx_v_fzi_blockLight, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__168 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__168)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__168);
  __Pyx_GIVEREF(__pyx_slice__168);
+1001:                       areaBlockLights[1:-1, -1:, 1:-1])
  __pyx_slice__169 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__169)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__169);
  __Pyx_GIVEREF(__pyx_slice__169);
  __pyx_slice__170 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__170)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__170);
  __Pyx_GIVEREF(__pyx_slice__170);
  __pyx_slice__171 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__171)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__171);
  __Pyx_GIVEREF(__pyx_slice__171);
/* … */
  __pyx_t_4 = PyObject_GetItem(__pyx_v_areaBlockLights, __pyx_tuple__172); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_11 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_11) {
    __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11); __pyx_t_11 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_9, __pyx_t_4);
  __pyx_t_5 = 0;
  __pyx_t_10 = 0;
  __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__172 = PyTuple_Pack(3, __pyx_slice__169, __pyx_slice__170, __pyx_slice__171); if (unlikely(!__pyx_tuple__172)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__172);
  __Pyx_GIVEREF(__pyx_tuple__172);
 1002: 
+1003:         minimumLight = 4
  __pyx_v_minimumLight = 4;
+1004:         numpy.clip(areaBlockLights, minimumLight, 16, areaBlockLights)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_clip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v_minimumLight); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_10 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_v_areaBlockLights);
  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_3);
  __Pyx_INCREF(__pyx_int_16);
  __Pyx_GIVEREF(__pyx_int_16);
  PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_int_16);
  __Pyx_INCREF(__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_v_areaBlockLights);
  PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_v_areaBlockLights);
  __pyx_t_3 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 1005: 
+1006:         return areaBlockLights
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_areaBlockLights);
  __pyx_r = __pyx_v_areaBlockLights;
  goto __pyx_L0;
 1007: 
+1008:     def calcHighDetailFaces(self, cr, blockRenderers):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_18calcHighDetailFaces(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9_renderer_15ChunkCalculator_17calcHighDetailFaces[] = " calculate the geometry for a chunk renderer from its blockMats, data,\n        and lighting array. fills in the cr's blockRenderers with verts\n        for each block facing and material";
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_18calcHighDetailFaces = {"calcHighDetailFaces", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_18calcHighDetailFaces, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9_renderer_15ChunkCalculator_17calcHighDetailFaces};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_18calcHighDetailFaces(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_cr = 0;
  PyObject *__pyx_v_blockRenderers = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcHighDetailFaces (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_cr,&__pyx_n_s_blockRenderers,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("calcHighDetailFaces", 1, 3, 3, 1); __PYX_ERR(0, 1008, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockRenderers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("calcHighDetailFaces", 1, 3, 3, 2); __PYX_ERR(0, 1008, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calcHighDetailFaces") < 0)) __PYX_ERR(0, 1008, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_cr = values[1];
    __pyx_v_blockRenderers = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("calcHighDetailFaces", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1008, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.calcHighDetailFaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_17calcHighDetailFaces(__pyx_self, __pyx_v_self, __pyx_v_cr, __pyx_v_blockRenderers);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_17calcHighDetailFaces(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_cr, PyObject *__pyx_v_blockRenderers) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_7_calcHighDetailFaces *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcHighDetailFaces", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_7_calcHighDetailFaces *)__pyx_tp_new_9_renderer___pyx_scope_struct_7_calcHighDetailFaces(__pyx_ptype_9_renderer___pyx_scope_struct_7_calcHighDetailFaces, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_cr = __pyx_v_cr;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cr);
  __pyx_cur_scope->__pyx_v_blockRenderers = __pyx_v_blockRenderers;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockRenderers);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockRenderers);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_15ChunkCalculator_19generator2, (PyObject *) __pyx_cur_scope, __pyx_n_s_calcHighDetailFaces, __pyx_n_s_ChunkCalculator_calcHighDetailFa, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1008, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.calcHighDetailFaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_19generator2(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1008, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("calcHighDetailFaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_22generator3(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__644 = PyTuple_Pack(19, __pyx_n_s_self, __pyx_n_s_cr, __pyx_n_s_blockRenderers, __pyx_n_s_cx, __pyx_n_s_cz, __pyx_n_s_level, __pyx_n_s_chunk, __pyx_n_s_neighboringChunks, __pyx_n_s_areaBlocks, __pyx_n_s_areaBlockLights, __pyx_n_s_allSlabs, __pyx_n_s_slab, __pyx_n_s_slabs, __pyx_n_s_showHiddenOres, __pyx_n_s_facingMats, __pyx_n_s_areaBlockMats, __pyx_n_s_facingBlockIndices, __pyx_n_s__633, __pyx_n_s_b); if (unlikely(!__pyx_tuple__644)) __PYX_ERR(0, 1008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__644);
  __Pyx_GIVEREF(__pyx_tuple__644);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_18calcHighDetailFaces, 0, __pyx_n_s_ChunkCalculator_calcHighDetailFa, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__645)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_calcHighDetailFaces, __pyx_t_11) < 0) __PYX_ERR(0, 1008, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_codeobj__645 = (PyObject*)__Pyx_PyCode_New(3, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__644, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_calcHighDetailFaces, 1008, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__645)) __PYX_ERR(0, 1008, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_7_calcHighDetailFaces {
  PyObject_HEAD
  PyObject *__pyx_v__;
  PyObject *__pyx_v_allSlabs;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_areaBlockMats;
  PyObject *__pyx_v_areaBlocks;
  PyObject *__pyx_v_b;
  PyObject *__pyx_v_blockRenderers;
  PyObject *__pyx_v_chunk;
  PyObject *__pyx_v_cr;
  PyObject *__pyx_v_cx;
  PyObject *__pyx_v_cz;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingMats;
  PyObject *__pyx_v_level;
  PyObject *__pyx_v_neighboringChunks;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_showHiddenOres;
  PyObject *__pyx_v_slab;
  PyObject *__pyx_v_slabs;
  PyObject *__pyx_t_0;
  PyObject *(*__pyx_t_1)(PyObject *);
  Py_ssize_t __pyx_t_2;
};

 1009:         """ calculate the geometry for a chunk renderer from its blockMats, data,
 1010:         and lighting array. fills in the cr's blockRenderers with verts
 1011:         for each block facing and material"""
 1012: 
 1013:         # chunkBlocks and chunkLights shall be indexed [x,z,y] to follow infdev's convention
+1014:         cx, cz = cr.chunkPosition
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 1014, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1014, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1014, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1014, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1014, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L5_unpacking_done;
    __pyx_L4_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 1014, __pyx_L1_error)
    __pyx_L5_unpacking_done:;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_cx = __pyx_t_2;
  __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_cz = __pyx_t_3;
  __pyx_t_3 = 0;
+1015:         level = cr.renderer.level
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_level = __pyx_t_3;
  __pyx_t_3 = 0;
 1016: 
+1017:         chunk = level.getChunk(cx, cz)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_level, __pyx_n_s_getChunk); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cx);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cx);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_cx);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cz);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cz);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_cz);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_chunk = __pyx_t_3;
  __pyx_t_3 = 0;
+1018:         neighboringChunks = self.getNeighboringChunks(chunk)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getNeighboringChunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_cur_scope->__pyx_v_chunk); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1018, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1018, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_cur_scope->__pyx_v_chunk);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1018, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_neighboringChunks = __pyx_t_3;
  __pyx_t_3 = 0;
 1019: 
+1020:         areaBlocks = self.getAreaBlocks(chunk, neighboringChunks)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getAreaBlocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_chunk);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_neighboringChunks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_neighboringChunks);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_neighboringChunks);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_areaBlocks = __pyx_t_3;
  __pyx_t_3 = 0;
+1021:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L6_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1021, __pyx_L1_error)
 1022: 
+1023:         areaBlockLights = self.getAreaBlockLights(chunk, neighboringChunks)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getAreaBlockLights); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_chunk);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_neighboringChunks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_neighboringChunks);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_neighboringChunks);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_t_3;
  __pyx_t_3 = 0;
+1024:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L7_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1024, __pyx_L1_error)
 1025: 
+1026:         allSlabs = set([b.ID for b in alphaMaterials.allBlocks if "Slab" in b.name])
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_allBlocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1026, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1026, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1026, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1026, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_7(__pyx_t_1);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1026, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_b);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_b, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_b, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_Slab, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1026, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_9 = (__pyx_t_8 != 0);
    if (__pyx_t_9) {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_b, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 1026, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PySet_New(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_allSlabs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1027:         for slab in allSlabs:
  __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_allSlabs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1027, __pyx_L1_error)
  for (;;) {
    {
      __pyx_t_3 = __pyx_t_7(__pyx_t_1);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1027, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_slab);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_slab, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1028:             slabs = areaBlocks == slab
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_areaBlocks, __pyx_cur_scope->__pyx_v_slab, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1028, __pyx_L1_error)
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_slabs);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_slabs, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+1029:             if len(slabs):
    __pyx_t_6 = PyObject_Length(__pyx_cur_scope->__pyx_v_slabs); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1029, __pyx_L1_error)
    __pyx_t_9 = (__pyx_t_6 != 0);
    if (__pyx_t_9) {
/* … */
    }
+1030:                 areaBlockLights[slabs] = areaBlockLights[:, :, 1:][slabs[:, :, :-1]]
  __pyx_slice__173 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__173)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__173);
  __Pyx_GIVEREF(__pyx_slice__173);
  __pyx_slice__174 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__174)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__174);
  __Pyx_GIVEREF(__pyx_slice__174);
  __pyx_slice__175 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__175)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__175);
  __Pyx_GIVEREF(__pyx_slice__175);
/* … */
      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_tuple__176); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1030, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
  __pyx_tuple__176 = PyTuple_Pack(3, __pyx_slice__173, __pyx_slice__174, __pyx_slice__175); if (unlikely(!__pyx_tuple__176)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__176);
  __Pyx_GIVEREF(__pyx_tuple__176);
  __pyx_slice__177 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__177)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__177);
  __Pyx_GIVEREF(__pyx_slice__177);
  __pyx_slice__178 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__178)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__178);
  __Pyx_GIVEREF(__pyx_slice__178);
  __pyx_slice__179 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__179)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__179);
  __Pyx_GIVEREF(__pyx_slice__179);
      __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_slabs, __pyx_tuple__180); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1030, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1030, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_cur_scope->__pyx_v_slabs, __pyx_t_4) < 0)) __PYX_ERR(0, 1030, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__180 = PyTuple_Pack(3, __pyx_slice__177, __pyx_slice__178, __pyx_slice__179); if (unlikely(!__pyx_tuple__180)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__180);
  __Pyx_GIVEREF(__pyx_tuple__180);
+1031:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 3;
    return __pyx_r;
    __pyx_L14_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1031, __pyx_L1_error)
 1032: 
+1033:         showHiddenOres = cr.renderer.showHiddenOres
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_renderer_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_showHiddenOres); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_showHiddenOres = __pyx_t_4;
  __pyx_t_4 = 0;
+1034:         if showHiddenOres:
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_showHiddenOres); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1034, __pyx_L1_error)
  if (__pyx_t_9) {
/* … */
    goto __pyx_L15;
  }
+1035:             facingMats = self.hiddenOreMaterials[areaBlocks]
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_hiddenOreMaterials); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1035, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_areaBlocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1035, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_facingMats = __pyx_t_1;
    __pyx_t_1 = 0;
 1036:         else:
+1037:             facingMats = self.exposedMaterialMap[areaBlocks]
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_exposedMaterialMap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1037, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_areaBlocks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1037, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_cur_scope->__pyx_v_facingMats = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L15:;
 1038: 
+1039:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 4;
  return __pyx_r;
  __pyx_L16_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1039, __pyx_L1_error)
 1040: 
+1041:         if self.roughGraphics:
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_roughGraphics); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1041, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_9) {
/* … */
    goto __pyx_L17;
  }
+1042:             areaBlockMats = self.roughMaterials[areaBlocks]
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_roughMaterials); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1042, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_areaBlocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1042, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_areaBlockMats = __pyx_t_1;
    __pyx_t_1 = 0;
 1043:         else:
+1044:             areaBlockMats = self.materialMap[areaBlocks]
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_materialMap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_areaBlocks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_cur_scope->__pyx_v_areaBlockMats = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L17:;
 1045: 
+1046:         facingBlockIndices = self.getFacingBlockIndices(areaBlocks, facingMats)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getFacingBlockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlocks);
  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_areaBlocks);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingMats);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingMats);
  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_facingMats);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_t_4;
  __pyx_t_4 = 0;
+1047:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 5;
  return __pyx_r;
  __pyx_L18_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1047, __pyx_L1_error)
 1048: 
+1049:         for _ in self.computeGeometry(chunk, areaBlockMats, facingBlockIndices, areaBlockLights, cr, blockRenderers):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_computeGeometry); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(6+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_chunk);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockMats);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockMats);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_areaBlockMats);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_6, __pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cr);
  PyTuple_SET_ITEM(__pyx_t_2, 4+__pyx_t_6, __pyx_cur_scope->__pyx_v_cr);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockRenderers);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockRenderers);
  PyTuple_SET_ITEM(__pyx_t_2, 5+__pyx_t_6, __pyx_cur_scope->__pyx_v_blockRenderers);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1049, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1049, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1049, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1049, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_7(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1049, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1050:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 6;
    return __pyx_r;
    __pyx_L21_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1050, __pyx_L1_error)
 1051: 
+1052:     def computeGeometry(self, chunk, areaBlockMats, facingBlockIndices, areaBlockLights, chunkRenderer, blockRenderers):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_21computeGeometry(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_21computeGeometry = {"computeGeometry", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_21computeGeometry, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_21computeGeometry(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunk = 0;
  PyObject *__pyx_v_areaBlockMats = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_chunkRenderer = 0;
  PyObject *__pyx_v_blockRenderers = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("computeGeometry (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunk,&__pyx_n_s_areaBlockMats,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_areaBlockLights,&__pyx_n_s_chunkRenderer,&__pyx_n_s_blockRenderers,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeGeometry", 1, 7, 7, 1); __PYX_ERR(0, 1052, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockMats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeGeometry", 1, 7, 7, 2); __PYX_ERR(0, 1052, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeGeometry", 1, 7, 7, 3); __PYX_ERR(0, 1052, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeGeometry", 1, 7, 7, 4); __PYX_ERR(0, 1052, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunkRenderer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeGeometry", 1, 7, 7, 5); __PYX_ERR(0, 1052, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockRenderers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeGeometry", 1, 7, 7, 6); __PYX_ERR(0, 1052, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeGeometry") < 0)) __PYX_ERR(0, 1052, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunk = values[1];
    __pyx_v_areaBlockMats = values[2];
    __pyx_v_facingBlockIndices = values[3];
    __pyx_v_areaBlockLights = values[4];
    __pyx_v_chunkRenderer = values[5];
    __pyx_v_blockRenderers = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("computeGeometry", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1052, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.computeGeometry", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_20computeGeometry(__pyx_self, __pyx_v_self, __pyx_v_chunk, __pyx_v_areaBlockMats, __pyx_v_facingBlockIndices, __pyx_v_areaBlockLights, __pyx_v_chunkRenderer, __pyx_v_blockRenderers);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_20computeGeometry(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunk, PyObject *__pyx_v_areaBlockMats, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_chunkRenderer, PyObject *__pyx_v_blockRenderers) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_8_computeGeometry *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("computeGeometry", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_8_computeGeometry *)__pyx_tp_new_9_renderer___pyx_scope_struct_8_computeGeometry(__pyx_ptype_9_renderer___pyx_scope_struct_8_computeGeometry, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_chunk = __pyx_v_chunk;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  __pyx_cur_scope->__pyx_v_areaBlockMats = __pyx_v_areaBlockMats;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockMats);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockMats);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_chunkRenderer = __pyx_v_chunkRenderer;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkRenderer);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkRenderer);
  __pyx_cur_scope->__pyx_v_blockRenderers = __pyx_v_blockRenderers;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockRenderers);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockRenderers);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_15ChunkCalculator_22generator3, (PyObject *) __pyx_cur_scope, __pyx_n_s_computeGeometry, __pyx_n_s_ChunkCalculator_computeGeometry, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1052, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.computeGeometry", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_22generator3(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1052, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("computeGeometry", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_25generator4(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__646 = PyTuple_Pack(26, __pyx_n_s_self, __pyx_n_s_chunk, __pyx_n_s_areaBlockMats, __pyx_n_s_facingBlockIndices, __pyx_n_s_areaBlockLights, __pyx_n_s_chunkRenderer, __pyx_n_s_blockRenderers, __pyx_n_s_blocks, __pyx_n_s_blockData, __pyx_n_s_blockMaterials, __pyx_n_s_copied, __pyx_n_s_nonzero, __pyx_n_s_door, __pyx_n_s_doors, __pyx_n_s_valid, __pyx_n_s_mask, __pyx_n_s_upper_mask, __pyx_n_s_sx, __pyx_n_s_sz, __pyx_n_s_asx, __pyx_n_s_asz, __pyx_n_s_y, __pyx_n_s_sy, __pyx_n_s_asy, __pyx_n_s__633, __pyx_n_s_f); if (unlikely(!__pyx_tuple__646)) __PYX_ERR(0, 1052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__646);
  __Pyx_GIVEREF(__pyx_tuple__646);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_21computeGeometry, 0, __pyx_n_s_ChunkCalculator_computeGeometry, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__647)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_computeGeometry, __pyx_t_11) < 0) __PYX_ERR(0, 1052, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_codeobj__647 = (PyObject*)__Pyx_PyCode_New(7, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__646, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_computeGeometry, 1052, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__647)) __PYX_ERR(0, 1052, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_8_computeGeometry {
  PyObject_HEAD
  PyObject *__pyx_v__;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_areaBlockMats;
  PyObject *__pyx_v_asx;
  PyObject *__pyx_v_asy;
  PyObject *__pyx_v_asz;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blockRenderers;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_chunk;
  PyObject *__pyx_v_chunkRenderer;
  int __pyx_v_copied;
  PyObject *__pyx_v_door;
  PyObject *__pyx_v_doors;
  PyObject *__pyx_v_f;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_mask;
  PyObject *__pyx_v_nonzero;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_sx;
  PyObject *__pyx_v_sy;
  PyObject *__pyx_v_sz;
  PyObject *__pyx_v_upper_mask;
  PyObject *__pyx_v_valid;
  PyObject *__pyx_v_y;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
};

+1053:         blocks, blockData = chunk.Blocks, chunk.Data
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_Blocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_Data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_t_1;
  __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_t_2;
  __pyx_t_2 = 0;
+1054:         blockData &= 0xf
  __pyx_t_2 = __Pyx_PyInt_AndObjC(__pyx_cur_scope->__pyx_v_blockData, __pyx_int_15, 0xf, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_blockData, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
+1055:         blockMaterials = areaBlockMats[1:-1, 1:-1, 1:-1]
  __pyx_slice__181 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__181)) __PYX_ERR(0, 1055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__181);
  __Pyx_GIVEREF(__pyx_slice__181);
  __pyx_slice__182 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__182)) __PYX_ERR(0, 1055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__182);
  __Pyx_GIVEREF(__pyx_slice__182);
  __pyx_slice__183 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__183)) __PYX_ERR(0, 1055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__183);
  __Pyx_GIVEREF(__pyx_slice__183);
/* … */
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockMats, __pyx_tuple__184); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_tuple__184 = PyTuple_Pack(3, __pyx_slice__181, __pyx_slice__182, __pyx_slice__183); if (unlikely(!__pyx_tuple__184)) __PYX_ERR(0, 1055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__184);
  __Pyx_GIVEREF(__pyx_tuple__184);
+1056:         if self.roughGraphics:
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_roughGraphics); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1056, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
/* … */
    goto __pyx_L4;
  }
+1057:             blockMaterials.clip(0, 1, blockMaterials)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockMaterials, __pyx_n_s_clip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_5 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_int_0);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_int_1);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1058:         else:
 1059:             # Special case for doors
 1060:             #
 1061:             # Each part of a door itself does not have all of the information required
 1062:             # to render, as direction/whether its open is on the lower part and the hinge
 1063:             # side is on the upper part. So here we combine the metadata of the bottom part
 1064:             # with the top to form 0-32 metadata(which would be used in door renderer).
 1065:             #
+1066:             copied = False
  /*else*/ {
    __pyx_cur_scope->__pyx_v_copied = 0;
+1067:             nonzero = numpy.nonzero
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_nonzero = __pyx_t_1;
    __pyx_t_1 = 0;
+1068:             for door in DoorRenderer.blocktypes:
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DoorRenderer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_blocktypes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
      __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
      __pyx_t_7 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1068, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1068, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      if (likely(!__pyx_t_7)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1068, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1068, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        } else {
          if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1068, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1068, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        }
      } else {
        __pyx_t_2 = __pyx_t_7(__pyx_t_1);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 1068, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_door);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_door, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L4:;
+1069:                 doors = blocks == door
      __pyx_t_2 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_door, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1069, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_doors);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_doors, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
+1070:                 if len(doors):
      __pyx_t_8 = PyObject_Length(__pyx_cur_scope->__pyx_v_doors); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 1070, __pyx_L1_error)
      __pyx_t_3 = (__pyx_t_8 != 0);
      if (__pyx_t_3) {
/* … */
      }
+1071:                     if not copied:
        __pyx_t_3 = ((!(__pyx_cur_scope->__pyx_v_copied != 0)) != 0);
        if (__pyx_t_3) {
/* … */
        }
 1072:                         # copy if required but only once
+1073:                         blockData = blockData.copy()
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockData, __pyx_n_s_copy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1073, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (__pyx_t_4) {
            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1073, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          } else {
            __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1073, __pyx_L1_error)
          }
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_blockData);
          __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_blockData, __pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_2);
          __pyx_t_2 = 0;
+1074:                         copied = True
          __pyx_cur_scope->__pyx_v_copied = 1;
 1075:                     # only accept lower part one block below upper part
+1076:                     valid = doors[:, :, :-1] & doors[:, :, 1:] & (blockData[:, :, :-1] < 8) & (blockData[:, :, 1:] >= 8)
  __pyx_slice__185 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__185)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__185);
  __Pyx_GIVEREF(__pyx_slice__185);
  __pyx_slice__186 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__186)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__186);
  __Pyx_GIVEREF(__pyx_slice__186);
  __pyx_slice__187 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__187)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__187);
  __Pyx_GIVEREF(__pyx_slice__187);
/* … */
        __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_doors, __pyx_tuple__188); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1076, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
  __pyx_tuple__188 = PyTuple_Pack(3, __pyx_slice__185, __pyx_slice__186, __pyx_slice__187); if (unlikely(!__pyx_tuple__188)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__188);
  __Pyx_GIVEREF(__pyx_tuple__188);
  __pyx_slice__189 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__189)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__189);
  __Pyx_GIVEREF(__pyx_slice__189);
  __pyx_slice__190 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__190)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__190);
  __Pyx_GIVEREF(__pyx_slice__190);
  __pyx_slice__191 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__191)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__191);
  __Pyx_GIVEREF(__pyx_slice__191);
        __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_doors, __pyx_tuple__192); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1076, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = PyNumber_And(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1076, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_tuple__192 = PyTuple_Pack(3, __pyx_slice__189, __pyx_slice__190, __pyx_slice__191); if (unlikely(!__pyx_tuple__192)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__192);
  __Pyx_GIVEREF(__pyx_tuple__192);
  __pyx_slice__193 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__193)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__193);
  __Pyx_GIVEREF(__pyx_slice__193);
  __pyx_slice__194 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__194)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__194);
  __Pyx_GIVEREF(__pyx_slice__194);
  __pyx_slice__195 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__195)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__195);
  __Pyx_GIVEREF(__pyx_slice__195);
        __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_tuple__196); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1076, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_int_8, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1076, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyNumber_And(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1076, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__196 = PyTuple_Pack(3, __pyx_slice__193, __pyx_slice__194, __pyx_slice__195); if (unlikely(!__pyx_tuple__196)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__196);
  __Pyx_GIVEREF(__pyx_tuple__196);
  __pyx_slice__197 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__197)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__197);
  __Pyx_GIVEREF(__pyx_slice__197);
  __pyx_slice__198 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__198)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__198);
  __Pyx_GIVEREF(__pyx_slice__198);
  __pyx_slice__199 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__199)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__199);
  __Pyx_GIVEREF(__pyx_slice__199);
        __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_tuple__200); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1076, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_int_8, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1076, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = PyNumber_And(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1076, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_valid);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_valid, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;
  __pyx_tuple__200 = PyTuple_Pack(3, __pyx_slice__197, __pyx_slice__198, __pyx_slice__199); if (unlikely(!__pyx_tuple__200)) __PYX_ERR(0, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__200);
  __Pyx_GIVEREF(__pyx_tuple__200);
 1077:                     # mask = valid.nonzero()
+1078:                     mask = nonzero(valid)
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_nonzero);
        __pyx_t_4 = __pyx_cur_scope->__pyx_v_nonzero; __pyx_t_6 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (!__pyx_t_6) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_valid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1078, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        } else {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1078, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_valid);
          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_valid);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_cur_scope->__pyx_v_valid);
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1078, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_mask);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_mask, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;
+1079:                     upper_mask = (mask[0], mask[1], mask[2] + 1)
        __pyx_t_2 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_mask, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1079, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_mask, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1079, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_9 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_mask, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1079, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1079, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1079, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_6);
        __pyx_t_2 = 0;
        __pyx_t_4 = 0;
        __pyx_t_6 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_upper_mask);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_upper_mask, ((PyObject*)__pyx_t_9));
        __Pyx_GIVEREF(__pyx_t_9);
        __pyx_t_9 = 0;
+1080:                     blockData[mask] += (blockData[upper_mask] - 8) * 16
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_mask);
        __pyx_t_9 = __pyx_cur_scope->__pyx_v_mask;
        __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1080, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_upper_mask); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1080, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_4, __pyx_int_8, 8, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1080, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1080, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1080, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_t_9, __pyx_t_2) < 0)) __PYX_ERR(0, 1080, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+1081:                     blockData[upper_mask] = blockData[mask] + 8
        __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_mask); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1081, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_8, 8, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1081, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_upper_mask, __pyx_t_2) < 0)) __PYX_ERR(0, 1081, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1082: 
+1083:         sx = sz = slice(0, 16)
  __pyx_t_1 = __pyx_slice__201;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_sx = ((PyObject*)__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_sz = ((PyObject*)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_slice__201 = PySlice_New(__pyx_int_0, __pyx_int_16, Py_None); if (unlikely(!__pyx_slice__201)) __PYX_ERR(0, 1083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__201);
  __Pyx_GIVEREF(__pyx_slice__201);
+1084:         asx = asz = slice(0, 18)
  __pyx_t_1 = __pyx_slice__202;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_asx = ((PyObject*)__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_asz = ((PyObject*)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_slice__202 = PySlice_New(__pyx_int_0, __pyx_int_18, Py_None); if (unlikely(!__pyx_slice__202)) __PYX_ERR(0, 1084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__202);
  __Pyx_GIVEREF(__pyx_slice__202);
 1085: 
+1086:         for y in xrange(0, chunk.world.Height, 16):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_world); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Height); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_16);
  __Pyx_GIVEREF(__pyx_int_16);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_16);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_xrange, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1086, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1086, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1086, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_7(__pyx_t_1);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1086, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_y);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_y, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1087:             sy = slice(y, y + 16)
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_y, __pyx_int_16, 16, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1087, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_9 = PySlice_New(__pyx_cur_scope->__pyx_v_y, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1087, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_sy);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_sy, ((PyObject*)__pyx_t_9));
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
+1088:             asy = slice(y, y + 18)
    __pyx_t_9 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_y, __pyx_int_18, 18, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_2 = PySlice_New(__pyx_cur_scope->__pyx_v_y, __pyx_t_9, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_asy);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_asy, ((PyObject*)__pyx_t_2));
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
 1089: 
+1090:             for _ in self.computeCubeGeometry(
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_computeCubeGeometry); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
/* … */
    if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
      __pyx_t_9 = __pyx_t_2; __Pyx_INCREF(__pyx_t_9); __pyx_t_8 = 0;
      __pyx_t_14 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1090, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_14 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1090, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      if (likely(!__pyx_t_14)) {
        if (likely(PyList_CheckExact(__pyx_t_9))) {
          if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_9)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1090, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_9, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1090, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        } else {
          if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1090, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_9, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1090, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        }
      } else {
        __pyx_t_2 = __pyx_t_14(__pyx_t_9);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 1090, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 1091:                     y,
 1092:                     blockRenderers,
+1093:                     blocks[sx, sz, sy],
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sx);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sx);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_sx);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sz);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sz);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_cur_scope->__pyx_v_sz);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sy);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sy);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_cur_scope->__pyx_v_sy);
    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1094:                     blockData[sx, sz, sy],
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sx);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sx);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_sx);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sz);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sz);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_cur_scope->__pyx_v_sz);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sy);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sy);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_cur_scope->__pyx_v_sy);
    __pyx_t_10 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1095:                     chunk.materials,
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_materials); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
+1096:                     blockMaterials[sx, sz, sy],
    __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sx);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sx);
    PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_cur_scope->__pyx_v_sx);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sz);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sz);
    PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_cur_scope->__pyx_v_sz);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sy);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sy);
    PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_cur_scope->__pyx_v_sy);
    __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockMaterials, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+1097:                     [f[sx, sz, sy] for f in facingBlockIndices],
    __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1097, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
      __pyx_t_13 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_13); __pyx_t_8 = 0;
      __pyx_t_14 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1097, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1097, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_14)) {
        if (likely(PyList_CheckExact(__pyx_t_13))) {
          if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_13)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_15 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_8); __Pyx_INCREF(__pyx_t_15); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1097, __pyx_L1_error)
          #else
          __pyx_t_15 = PySequence_ITEM(__pyx_t_13, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1097, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          #endif
        } else {
          if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_13)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_15 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_8); __Pyx_INCREF(__pyx_t_15); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1097, __pyx_L1_error)
          #else
          __pyx_t_15 = PySequence_ITEM(__pyx_t_13, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1097, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          #endif
        }
      } else {
        __pyx_t_15 = __pyx_t_14(__pyx_t_13);
        if (unlikely(!__pyx_t_15)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 1097, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_15);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_f);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_f, __pyx_t_15);
      __Pyx_GIVEREF(__pyx_t_15);
      __pyx_t_15 = 0;
      __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1097, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sx);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sx);
      PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_sx);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sz);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sz);
      PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_cur_scope->__pyx_v_sz);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sy);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sy);
      PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_cur_scope->__pyx_v_sy);
      __pyx_t_16 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_f, __pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1097, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_11, (PyObject*)__pyx_t_16))) __PYX_ERR(0, 1097, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    }
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+1098:                     areaBlockLights[asx, asz, asy],
    __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1098, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_asx);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_asx);
    PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_cur_scope->__pyx_v_asx);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_asz);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_asz);
    PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_cur_scope->__pyx_v_asz);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_asy);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_asy);
    PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_cur_scope->__pyx_v_asy);
    __pyx_t_16 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_13); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1098, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+1099:                     chunkRenderer):
    __pyx_t_13 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_15 = PyTuple_New(9+__pyx_t_8); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_y);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_y);
    PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_8, __pyx_cur_scope->__pyx_v_y);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockRenderers);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockRenderers);
    PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_8, __pyx_cur_scope->__pyx_v_blockRenderers);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_8, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_10);
    PyTuple_SET_ITEM(__pyx_t_15, 3+__pyx_t_8, __pyx_t_10);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_15, 4+__pyx_t_8, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    PyTuple_SET_ITEM(__pyx_t_15, 5+__pyx_t_8, __pyx_t_12);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_15, 6+__pyx_t_8, __pyx_t_11);
    __Pyx_GIVEREF(__pyx_t_16);
    PyTuple_SET_ITEM(__pyx_t_15, 7+__pyx_t_8, __pyx_t_16);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkRenderer);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkRenderer);
    PyTuple_SET_ITEM(__pyx_t_15, 8+__pyx_t_8, __pyx_cur_scope->__pyx_v_chunkRenderer);
    __pyx_t_6 = 0;
    __pyx_t_10 = 0;
    __pyx_t_4 = 0;
    __pyx_t_12 = 0;
    __pyx_t_11 = 0;
    __pyx_t_16 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+1100:                 yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
      __pyx_cur_scope->__pyx_t_3 = __pyx_t_8;
      __Pyx_XGIVEREF(__pyx_t_9);
      __pyx_cur_scope->__pyx_t_4 = __pyx_t_9;
      __pyx_cur_scope->__pyx_t_5 = __pyx_t_14;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L15_resume_from_yield:;
      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
      __pyx_t_7 = __pyx_cur_scope->__pyx_t_2;
      __pyx_t_8 = __pyx_cur_scope->__pyx_t_3;
      __pyx_t_9 = __pyx_cur_scope->__pyx_t_4;
      __pyx_cur_scope->__pyx_t_4 = 0;
      __Pyx_XGOTREF(__pyx_t_9);
      __pyx_t_14 = __pyx_cur_scope->__pyx_t_5;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1100, __pyx_L1_error)
 1101: 
+1102:     def computeCubeGeometry(self, y, blockRenderers, blocks, blockData, materials, blockMaterials, facingBlockIndices,
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_24computeCubeGeometry(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_24computeCubeGeometry = {"computeCubeGeometry", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_24computeCubeGeometry, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_24computeCubeGeometry(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_v_blockRenderers = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_materials = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  CYTHON_UNUSED PyObject *__pyx_v_chunkRenderer = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("computeCubeGeometry (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_y,&__pyx_n_s_blockRenderers,&__pyx_n_s_blocks,&__pyx_n_s_blockData,&__pyx_n_s_materials,&__pyx_n_s_blockMaterials,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_areaBlockLights,&__pyx_n_s_chunkRenderer,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, 1); __PYX_ERR(0, 1102, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockRenderers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, 2); __PYX_ERR(0, 1102, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, 3); __PYX_ERR(0, 1102, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, 4); __PYX_ERR(0, 1102, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_materials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, 5); __PYX_ERR(0, 1102, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, 6); __PYX_ERR(0, 1102, __pyx_L3_error)
        }
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, 7); __PYX_ERR(0, 1102, __pyx_L3_error)
        }
        case  8:
        if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, 8); __PYX_ERR(0, 1102, __pyx_L3_error)
        }
        case  9:
        if (likely((values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunkRenderer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, 9); __PYX_ERR(0, 1102, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeCubeGeometry") < 0)) __PYX_ERR(0, 1102, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_self = values[0];
    __pyx_v_y = values[1];
    __pyx_v_blockRenderers = values[2];
    __pyx_v_blocks = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_materials = values[5];
    __pyx_v_blockMaterials = values[6];
    __pyx_v_facingBlockIndices = values[7];
    __pyx_v_areaBlockLights = values[8];
    __pyx_v_chunkRenderer = values[9];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("computeCubeGeometry", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1102, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.computeCubeGeometry", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_23computeCubeGeometry(__pyx_self, __pyx_v_self, __pyx_v_y, __pyx_v_blockRenderers, __pyx_v_blocks, __pyx_v_blockData, __pyx_v_materials, __pyx_v_blockMaterials, __pyx_v_facingBlockIndices, __pyx_v_areaBlockLights, __pyx_v_chunkRenderer);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_23computeCubeGeometry(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_y, PyObject *__pyx_v_blockRenderers, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockData, PyObject *__pyx_v_materials, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_areaBlockLights, CYTHON_UNUSED PyObject *__pyx_v_chunkRenderer) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_9_computeCubeGeometry *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("computeCubeGeometry", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_9_computeCubeGeometry *)__pyx_tp_new_9_renderer___pyx_scope_struct_9_computeCubeGeometry(__pyx_ptype_9_renderer___pyx_scope_struct_9_computeCubeGeometry, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_y = __pyx_v_y;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_y);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_y);
  __pyx_cur_scope->__pyx_v_blockRenderers = __pyx_v_blockRenderers;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockRenderers);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockRenderers);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_materials = __pyx_v_materials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materials);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_chunkRenderer = __pyx_v_chunkRenderer;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkRenderer);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkRenderer);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_15ChunkCalculator_25generator4, (PyObject *) __pyx_cur_scope, __pyx_n_s_computeCubeGeometry, __pyx_n_s_ChunkCalculator_computeCubeGeome, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1102, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.computeCubeGeometry", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
static PyObject *__pyx_gb_9_renderer_15ChunkCalculator_25generator4(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1102, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("computeCubeGeometry", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__648 = PyTuple_Pack(18, __pyx_n_s_self, __pyx_n_s_y, __pyx_n_s_blockRenderers, __pyx_n_s_blocks, __pyx_n_s_blockData, __pyx_n_s_materials, __pyx_n_s_blockMaterials, __pyx_n_s_facingBlockIndices, __pyx_n_s_areaBlockLights, __pyx_n_s_chunkRenderer, __pyx_n_s_materialCounts, __pyx_n_s_append, __pyx_n_s_texMap, __pyx_n_s_texMap, __pyx_n_s_blockRendererClass, __pyx_n_s_mi, __pyx_n_s_blockRenderer, __pyx_n_s__633); if (unlikely(!__pyx_tuple__648)) __PYX_ERR(0, 1102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__648);
  __Pyx_GIVEREF(__pyx_tuple__648);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_24computeCubeGeometry, 0, __pyx_n_s_ChunkCalculator_computeCubeGeome, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__649)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_computeCubeGeometry, __pyx_t_11) < 0) __PYX_ERR(0, 1102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_codeobj__649 = (PyObject*)__Pyx_PyCode_New(10, 0, 18, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__648, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_computeCubeGeometry, 1102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__649)) __PYX_ERR(0, 1102, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_9_computeCubeGeometry {
  PyObject_HEAD
  PyObject *__pyx_v__;
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blockRenderer;
  PyObject *__pyx_v_blockRendererClass;
  PyObject *__pyx_v_blockRenderers;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_chunkRenderer;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_materialCounts;
  PyObject *__pyx_v_materials;
  PyObject *__pyx_v_mi;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_y;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
};

 1103:                             areaBlockLights, chunkRenderer):
+1104:         materialCounts = numpy.bincount(blockMaterials.ravel())
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_bincount); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockMaterials, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1104, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1104, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1104, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialCounts = __pyx_t_1;
  __pyx_t_1 = 0;
 1105: 
+1106:         append = blockRenderers.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockRenderers, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
 1107: 
+1108:         def texMap(blocks, blockData=0, direction=slice(None)):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_19computeCubeGeometry_1texMap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_19computeCubeGeometry_1texMap = {"texMap", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_19computeCubeGeometry_1texMap, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_19computeCubeGeometry_1texMap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_direction = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("texMap (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocks,&__pyx_n_s_blockData,&__pyx_n_s_direction,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)((PyObject *)__pyx_int_0));
    values[2] = ((PyObject *)((PyObject*)__pyx_slice__203));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_direction);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "texMap") < 0)) __PYX_ERR(0, 1108, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_blocks = values[0];
    __pyx_v_blockData = values[1];
    __pyx_v_direction = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("texMap", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1108, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.computeCubeGeometry.texMap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_19computeCubeGeometry_texMap(__pyx_self, __pyx_v_blocks, __pyx_v_blockData, __pyx_v_direction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_19computeCubeGeometry_texMap(PyObject *__pyx_self, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockData, PyObject *__pyx_v_direction) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_9_computeCubeGeometry *__pyx_cur_scope;
  struct __pyx_obj_9_renderer___pyx_scope_struct_9_computeCubeGeometry *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("texMap", 0);
  __pyx_outer_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_9_computeCubeGeometry *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.ChunkCalculator.computeCubeGeometry.texMap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_slice__203 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__203)) __PYX_ERR(0, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__203);
  __Pyx_GIVEREF(__pyx_slice__203);
  __pyx_tuple__204 = PyTuple_Pack(3, __pyx_n_s_blocks, __pyx_n_s_blockData, __pyx_n_s_direction); if (unlikely(!__pyx_tuple__204)) __PYX_ERR(0, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__204);
  __Pyx_GIVEREF(__pyx_tuple__204);
  __pyx_codeobj__205 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__204, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_texMap, 1108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) __PYX_ERR(0, 1108, __pyx_L1_error)
/* … */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_19computeCubeGeometry_1texMap, 0, __pyx_n_s_ChunkCalculator_computeCubeGeome_2, ((PyObject*)__pyx_cur_scope), __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__205)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__206);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_tuple__206 = PyTuple_Pack(2, ((PyObject *)__pyx_int_0), ((PyObject*)__pyx_slice__203)); if (unlikely(!__pyx_tuple__206)) __PYX_ERR(0, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__206);
  __Pyx_GIVEREF(__pyx_tuple__206);
+1109:             return materials.blockTextures[blocks, blockData, direction]  # xxx slow
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_v_materials)) { __Pyx_RaiseClosureNameError("materials"); __PYX_ERR(0, 1109, __pyx_L1_error) }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_materials, __pyx_n_s_blockTextures); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_v_blocks);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_blocks);
  __Pyx_INCREF(__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_v_blockData);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_blockData);
  __Pyx_INCREF(__pyx_v_direction);
  __Pyx_GIVEREF(__pyx_v_direction);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_direction);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;
 1110: 
+1111:         for blockRendererClass in self.blockRendererClasses:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_blockRendererClasses); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1111, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1111, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1111, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1111, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1111, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_7(__pyx_t_3);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1111, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockRendererClass);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockRendererClass, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
/* … */
    __pyx_L4_continue:;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1112:             mi = blockRendererClass.materialIndex
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockRendererClass, __pyx_n_s_materialIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_mi);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_mi, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
+1113:             if mi >= len(materialCounts) or materialCounts[mi] == 0:
    __pyx_t_9 = PyObject_Length(__pyx_cur_scope->__pyx_v_materialCounts); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_mi, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!__pyx_t_10) {
    } else {
      __pyx_t_8 = __pyx_t_10;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_5 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_materialCounts, __pyx_cur_scope->__pyx_v_mi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = __pyx_t_10;
    __pyx_L7_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
    }
+1114:                 continue
      goto __pyx_L4_continue;
 1115: 
+1116:             blockRenderer = blockRendererClass(self)
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockRendererClass);
    __pyx_t_5 = __pyx_cur_scope->__pyx_v_blockRendererClass; __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_self);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockRenderer);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockRenderer, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
+1117:             blockRenderer.y = y
    if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_blockRenderer, __pyx_n_s_y, __pyx_cur_scope->__pyx_v_y) < 0) __PYX_ERR(0, 1117, __pyx_L1_error)
+1118:             blockRenderer.materials = materials
    if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_blockRenderer, __pyx_n_s_materials, __pyx_cur_scope->__pyx_v_materials) < 0) __PYX_ERR(0, 1118, __pyx_L1_error)
+1119:             for _ in blockRenderer.makeVertices(facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights,
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockRenderer, __pyx_n_s_makeVertices); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
/* … */
    if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
      __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_9 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1119, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    for (;;) {
      if (likely(!__pyx_t_11)) {
        if (likely(PyList_CheckExact(__pyx_t_5))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_5)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1119, __pyx_L1_error)
          #else
          __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1119, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1119, __pyx_L1_error)
          #else
          __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1119, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
        }
      } else {
        __pyx_t_1 = __pyx_t_11(__pyx_t_5);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 1119, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1120:                                                 texMap):
    __pyx_t_4 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_2 = PyTuple_New(6+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_cur_scope->__pyx_v_facingBlockIndices);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_blocks);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_9, __pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
    PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_9, __pyx_cur_scope->__pyx_v_blockData);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
    PyTuple_SET_ITEM(__pyx_t_2, 4+__pyx_t_9, __pyx_cur_scope->__pyx_v_areaBlockLights);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
    PyTuple_SET_ITEM(__pyx_t_2, 5+__pyx_t_9, __pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1121:                 yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_t_3);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
      __Pyx_XGIVEREF(__pyx_t_5);
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
      __pyx_cur_scope->__pyx_t_3 = __pyx_t_7;
      __pyx_cur_scope->__pyx_t_4 = __pyx_t_9;
      __pyx_cur_scope->__pyx_t_5 = __pyx_t_11;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L11_resume_from_yield:;
      __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_3);
      __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = 0;
      __Pyx_XGOTREF(__pyx_t_5);
      __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
      __pyx_t_7 = __pyx_cur_scope->__pyx_t_3;
      __pyx_t_9 = __pyx_cur_scope->__pyx_t_4;
      __pyx_t_11 = __pyx_cur_scope->__pyx_t_5;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1121, __pyx_L1_error)
+1122:             append(blockRenderer)
    __pyx_t_12 = __Pyx_PyObject_Append(__pyx_cur_scope->__pyx_v_blockRenderers, __pyx_cur_scope->__pyx_v_blockRenderer); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 1122, __pyx_L1_error)
 1123: 
+1124:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_3);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_7;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L12_resume_from_yield:;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_3);
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_7 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1124, __pyx_L1_error)
 1125: 
+1126:     def makeTemplate(self, direction, blockIndices):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_27makeTemplate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15ChunkCalculator_27makeTemplate = {"makeTemplate", (PyCFunction)__pyx_pw_9_renderer_15ChunkCalculator_27makeTemplate, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15ChunkCalculator_27makeTemplate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_direction = 0;
  PyObject *__pyx_v_blockIndices = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeTemplate (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_direction,&__pyx_n_s_blockIndices,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_direction)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeTemplate", 1, 3, 3, 1); __PYX_ERR(0, 1126, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeTemplate", 1, 3, 3, 2); __PYX_ERR(0, 1126, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeTemplate") < 0)) __PYX_ERR(0, 1126, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_direction = values[1];
    __pyx_v_blockIndices = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeTemplate", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1126, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkCalculator.makeTemplate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15ChunkCalculator_26makeTemplate(__pyx_self, __pyx_v_self, __pyx_v_direction, __pyx_v_blockIndices);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15ChunkCalculator_26makeTemplate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_direction, PyObject *__pyx_v_blockIndices) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeTemplate", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.ChunkCalculator.makeTemplate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__650 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_direction, __pyx_n_s_blockIndices); if (unlikely(!__pyx_tuple__650)) __PYX_ERR(0, 1126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__650);
  __Pyx_GIVEREF(__pyx_tuple__650);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15ChunkCalculator_27makeTemplate, 0, __pyx_n_s_ChunkCalculator_makeTemplate, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__651)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeTemplate, __pyx_t_11) < 0) __PYX_ERR(0, 1126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_codeobj__651 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__650, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeTemplate, 1126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__651)) __PYX_ERR(0, 1126, __pyx_L1_error)
+1127:         return self.precomputedVertices[direction][blockIndices]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_precomputedVertices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_direction); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 1128: 
 1129: 
+1130: cdef class Layer:
struct __pyx_obj_9_renderer_Layer {
  PyObject_HEAD
  PyObject *Blocks;
  PyObject *Entities;
  PyObject *Monsters;
  PyObject *Items;
  PyObject *TileEntities;
  PyObject *TileTicks;
  PyObject *TerrainPopulated;
  PyObject *ChunkBorder;
  PyObject *AllLayers;
};

 1131:     cdef unicode Blocks, Entities, Monsters, Items, TileEntities, TileTicks, TerrainPopulated, ChunkBorder
 1132:     cdef tuple AllLayers
+1133:     Blocks = u"Blocks"
  __Pyx_INCREF(__pyx_n_u_Blocks);
  __Pyx_XDECREF_SET(Blocks, __pyx_n_u_Blocks);
+1134:     Entities = u"Entities"
  __Pyx_INCREF(__pyx_n_u_Entities);
  __Pyx_XDECREF_SET(Entities, __pyx_n_u_Entities);
+1135:     Monsters = u"Monsters"
  __Pyx_INCREF(__pyx_n_u_Monsters);
  __Pyx_XDECREF_SET(Monsters, __pyx_n_u_Monsters);
+1136:     Items = u"Items"
  __Pyx_INCREF(__pyx_n_u_Items);
  __Pyx_XDECREF_SET(Items, __pyx_n_u_Items);
+1137:     TileEntities = u"TileEntities"
  __Pyx_INCREF(__pyx_n_u_TileEntities);
  __Pyx_XDECREF_SET(TileEntities, __pyx_n_u_TileEntities);
+1138:     TileTicks = u"TileTicks"
  __Pyx_INCREF(__pyx_n_u_TileTicks);
  __Pyx_XDECREF_SET(TileTicks, __pyx_n_u_TileTicks);
+1139:     TerrainPopulated = u"TerrainPopulated"
  __Pyx_INCREF(__pyx_n_u_TerrainPopulated);
  __Pyx_XDECREF_SET(TerrainPopulated, __pyx_n_u_TerrainPopulated);
+1140:     ChunkBorder = u"ChunkBorder"
  __Pyx_INCREF(__pyx_n_u_ChunkBorder);
  __Pyx_XDECREF_SET(ChunkBorder, __pyx_n_u_ChunkBorder);
+1141:     AllLayers = (Blocks, Entities, Monsters, Items, TileEntities, TileTicks, TerrainPopulated, ChunkBorder)
  __pyx_t_2 = PyTuple_New(8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(Blocks);
  __Pyx_GIVEREF(Blocks);
  PyTuple_SET_ITEM(__pyx_t_2, 0, Blocks);
  __Pyx_INCREF(Entities);
  __Pyx_GIVEREF(Entities);
  PyTuple_SET_ITEM(__pyx_t_2, 1, Entities);
  __Pyx_INCREF(Monsters);
  __Pyx_GIVEREF(Monsters);
  PyTuple_SET_ITEM(__pyx_t_2, 2, Monsters);
  __Pyx_INCREF(Items);
  __Pyx_GIVEREF(Items);
  PyTuple_SET_ITEM(__pyx_t_2, 3, Items);
  __Pyx_INCREF(TileEntities);
  __Pyx_GIVEREF(TileEntities);
  PyTuple_SET_ITEM(__pyx_t_2, 4, TileEntities);
  __Pyx_INCREF(TileTicks);
  __Pyx_GIVEREF(TileTicks);
  PyTuple_SET_ITEM(__pyx_t_2, 5, TileTicks);
  __Pyx_INCREF(TerrainPopulated);
  __Pyx_GIVEREF(TerrainPopulated);
  PyTuple_SET_ITEM(__pyx_t_2, 6, TerrainPopulated);
  __Pyx_INCREF(ChunkBorder);
  __Pyx_GIVEREF(ChunkBorder);
  PyTuple_SET_ITEM(__pyx_t_2, 7, ChunkBorder);
  __Pyx_XDECREF_SET(AllLayers, ((PyObject*)__pyx_t_2));
  __pyx_t_2 = 0;
 1142: 
 1143: 
+1144: cdef class BlockRenderer(object):
struct __pyx_obj_9_renderer_BlockRenderer {
  PyObject_HEAD
  PyObject *detailLevels;
  PyObject *layer;
  PyObject *directionOffsets;
  PyObject *renderstate;
  int used;
};

 1145:     cdef tuple detailLevels
 1146:     cdef unicode layer
 1147:     cdef dict directionOffsets
 1148:     cdef object renderstate
 1149:     cdef bint used
+1150:     detailLevels = (0,)
  __Pyx_INCREF(__pyx_tuple__652);
  __Pyx_XDECREF_SET(detailLevels, __pyx_tuple__652);
/* … */
  __pyx_tuple__652 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__652)) __PYX_ERR(0, 1150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__652);
  __Pyx_GIVEREF(__pyx_tuple__652);
+1151:     layer = Layer.Blocks
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1151, __pyx_L1_error)
  __Pyx_XDECREF_SET(layer, ((PyObject*)__pyx_t_2));
  __pyx_t_2 = 0;
 1152:     directionOffsets = {
+1153:         pymclevel.faces.FaceXDecreasing: numpy.s_[:-2, 1:-1, 1:-1],
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_s); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__653 = PySlice_New(Py_None, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__653)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__653);
  __Pyx_GIVEREF(__pyx_slice__653);
  __pyx_slice__654 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__654)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__654);
  __Pyx_GIVEREF(__pyx_slice__654);
  __pyx_slice__655 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__655)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__655);
  __Pyx_GIVEREF(__pyx_slice__655);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_11, __pyx_tuple__656); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_1, __pyx_t_3) < 0) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__656 = PyTuple_Pack(3, __pyx_slice__653, __pyx_slice__654, __pyx_slice__655); if (unlikely(!__pyx_tuple__656)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__656);
  __Pyx_GIVEREF(__pyx_tuple__656);
+1154:         pymclevel.faces.FaceXIncreasing: numpy.s_[2:, 1:-1, 1:-1],
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_s); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_slice__657 = PySlice_New(__pyx_int_2, Py_None, Py_None); if (unlikely(!__pyx_slice__657)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__657);
  __Pyx_GIVEREF(__pyx_slice__657);
  __pyx_slice__658 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__658)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__658);
  __Pyx_GIVEREF(__pyx_slice__658);
  __pyx_slice__659 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__659)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__659);
  __Pyx_GIVEREF(__pyx_slice__659);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_11, __pyx_tuple__660); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_3, __pyx_t_1) < 0) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__660 = PyTuple_Pack(3, __pyx_slice__657, __pyx_slice__658, __pyx_slice__659); if (unlikely(!__pyx_tuple__660)) __PYX_ERR(0, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__660);
  __Pyx_GIVEREF(__pyx_tuple__660);
+1155:         pymclevel.faces.FaceYDecreasing: numpy.s_[1:-1, 1:-1, :-2],
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_s); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__661 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__661)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__661);
  __Pyx_GIVEREF(__pyx_slice__661);
  __pyx_slice__662 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__662)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__662);
  __Pyx_GIVEREF(__pyx_slice__662);
  __pyx_slice__663 = PySlice_New(Py_None, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__663)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__663);
  __Pyx_GIVEREF(__pyx_slice__663);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_11, __pyx_tuple__664); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_1, __pyx_t_3) < 0) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__664 = PyTuple_Pack(3, __pyx_slice__661, __pyx_slice__662, __pyx_slice__663); if (unlikely(!__pyx_tuple__664)) __PYX_ERR(0, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__664);
  __Pyx_GIVEREF(__pyx_tuple__664);
+1156:         pymclevel.faces.FaceYIncreasing: numpy.s_[1:-1, 1:-1, 2:],
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_s); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_slice__665 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__665)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__665);
  __Pyx_GIVEREF(__pyx_slice__665);
  __pyx_slice__666 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__666)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__666);
  __Pyx_GIVEREF(__pyx_slice__666);
  __pyx_slice__667 = PySlice_New(__pyx_int_2, Py_None, Py_None); if (unlikely(!__pyx_slice__667)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__667);
  __Pyx_GIVEREF(__pyx_slice__667);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_11, __pyx_tuple__668); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_3, __pyx_t_1) < 0) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__668 = PyTuple_Pack(3, __pyx_slice__665, __pyx_slice__666, __pyx_slice__667); if (unlikely(!__pyx_tuple__668)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__668);
  __Pyx_GIVEREF(__pyx_tuple__668);
+1157:         pymclevel.faces.FaceZDecreasing: numpy.s_[1:-1, :-2, 1:-1],
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_s); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__669 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__669)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__669);
  __Pyx_GIVEREF(__pyx_slice__669);
  __pyx_slice__670 = PySlice_New(Py_None, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__670)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__670);
  __Pyx_GIVEREF(__pyx_slice__670);
  __pyx_slice__671 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__671)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__671);
  __Pyx_GIVEREF(__pyx_slice__671);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_11, __pyx_tuple__672); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_1, __pyx_t_3) < 0) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__672 = PyTuple_Pack(3, __pyx_slice__669, __pyx_slice__670, __pyx_slice__671); if (unlikely(!__pyx_tuple__672)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__672);
  __Pyx_GIVEREF(__pyx_tuple__672);
+1158:         pymclevel.faces.FaceZIncreasing: numpy.s_[1:-1, 2:, 1:-1],
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_s); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_slice__673 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__673)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__673);
  __Pyx_GIVEREF(__pyx_slice__673);
  __pyx_slice__674 = PySlice_New(__pyx_int_2, Py_None, Py_None); if (unlikely(!__pyx_slice__674)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__674);
  __Pyx_GIVEREF(__pyx_slice__674);
  __pyx_slice__675 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__675)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__675);
  __Pyx_GIVEREF(__pyx_slice__675);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_11, __pyx_tuple__676); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_3, __pyx_t_1) < 0) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XDECREF_SET(directionOffsets, ((PyObject*)__pyx_t_2));
  __pyx_t_2 = 0;
  __pyx_tuple__676 = PyTuple_Pack(3, __pyx_slice__673, __pyx_slice__674, __pyx_slice__675); if (unlikely(!__pyx_tuple__676)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__676);
  __Pyx_GIVEREF(__pyx_tuple__676);
 1159:     }
+1160:     renderstate = ChunkCalculator.renderstateAlphaTest
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_renderstateAlphaTest); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XDECREF_SET(renderstate, __pyx_t_1);
  __pyx_t_1 = 0;
+1161:     used = False
  used = 0;
 1162: 
+1163:     def __init__(self, cc):
/* Python wrapper */
static int __pyx_pw_9_renderer_13BlockRenderer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9_renderer_13BlockRenderer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cc,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cc)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1163, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_cc = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1163, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.BlockRenderer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer___init__(((struct __pyx_obj_9_renderer_BlockRenderer *)__pyx_v_self), __pyx_v_cc);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9_renderer_13BlockRenderer___init__(struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self, PyObject *__pyx_v_cc) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.BlockRenderer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1164:         self.makeTemplate = cc.makeTemplate
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cc, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_makeTemplate, __pyx_t_1) < 0) __PYX_ERR(0, 1164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1165:         self.chunkCalculator = cc
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_chunkCalculator, __pyx_v_cc) < 0) __PYX_ERR(0, 1165, __pyx_L1_error)
+1166:         self.vertexArrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_vertexArrays, __pyx_t_1) < 0) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 1167:         # cls = self.__class__
 1168:         # print dir(pymclevel.faces)
 1169:         # for face in dir(pymclevel.faces): # hack
 1170:         #    if face.startswith('Face'):
 1171:         #        setattr(cls, face, getattr(pymclevel.faces, face))
 1172:         pass
 1173: 
+1174:     @classmethod
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9_renderer_BlockRenderer->tp_dict, __pyx_n_s_getBlocktypes, __pyx_t_2) < 0) __PYX_ERR(0, 1175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_9_renderer_BlockRenderer);
+1175:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_3getBlocktypes(PyObject *__pyx_v_cls, PyObject *__pyx_v_mats); /*proto*/
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_3getBlocktypes(PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer_2getBlocktypes(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_mats));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13BlockRenderer_2getBlocktypes(PyTypeObject *__pyx_v_cls, CYTHON_UNUSED PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.BlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_9_renderer_BlockRenderer, __pyx_n_s_getBlocktypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
+1176:         return cls.blocktypes
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cls), __pyx_n_s_blocktypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 1177: 
+1178:     def setAlpha(self, alpha):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_5setAlpha(PyObject *__pyx_v_self, PyObject *__pyx_v_alpha); /*proto*/
static char __pyx_doc_9_renderer_13BlockRenderer_4setAlpha[] = "alpha is an unsigned byte value";
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_5setAlpha(PyObject *__pyx_v_self, PyObject *__pyx_v_alpha) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setAlpha (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer_4setAlpha(((struct __pyx_obj_9_renderer_BlockRenderer *)__pyx_v_self), ((PyObject *)__pyx_v_alpha));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13BlockRenderer_4setAlpha(struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self, PyObject *__pyx_v_alpha) {
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setAlpha", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.BlockRenderer.setAlpha", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1179:         "alpha is an unsigned byte value"
+1180:         for a in self.vertexArrays:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1180, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1180, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1180, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1180, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1181:             a.view('uint8')[_RGBA][..., 3] = alpha
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_view); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__207, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGBA); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyObject_GetItem(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__207 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__207)) __PYX_ERR(0, 1181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__207);
  __Pyx_GIVEREF(__pyx_tuple__207);
    if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_tuple__208, __pyx_v_alpha) < 0)) __PYX_ERR(0, 1181, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_tuple__208 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_3); if (unlikely(!__pyx_tuple__208)) __PYX_ERR(0, 1181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__208);
  __Pyx_GIVEREF(__pyx_tuple__208);
 1182: 
+1183:     def bufferSize(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_7bufferSize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_7bufferSize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bufferSize (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer_6bufferSize(((struct __pyx_obj_9_renderer_BlockRenderer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_13BlockRenderer_10bufferSize_2generator40(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
static PyObject *__pyx_pf_9_renderer_13BlockRenderer_6bufferSize(struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_10_bufferSize *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bufferSize", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_10_bufferSize *)__pyx_tp_new_9_renderer___pyx_scope_struct_10_bufferSize(__pyx_ptype_9_renderer___pyx_scope_struct_10_bufferSize, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.BlockRenderer.bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_10_bufferSize {
  PyObject_HEAD
  struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self;
};

+1184:         return sum(a.size for a in self.vertexArrays) * 4
static PyObject *__pyx_pf_9_renderer_13BlockRenderer_10bufferSize_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_11_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_11_genexpr *)__pyx_tp_new_9_renderer___pyx_scope_struct_11_genexpr(__pyx_ptype_9_renderer___pyx_scope_struct_11_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_10_bufferSize *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_13BlockRenderer_10bufferSize_2generator40, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_bufferSize_locals_genexpr, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1184, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.BlockRenderer.bufferSize.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_13BlockRenderer_10bufferSize_2generator40(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1184, __pyx_L1_error)
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1184, __pyx_L1_error) }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self), __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1184, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1184, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1184, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1184, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_a);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_a, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_a, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1184, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_pf_9_renderer_13BlockRenderer_10bufferSize_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_int_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_11_genexpr {
  PyObject_HEAD
  struct __pyx_obj_9_renderer___pyx_scope_struct_10_bufferSize *__pyx_outer_scope;
  PyObject *__pyx_v_a;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

 1185: 
+1186:     def getMaterialIndices(self, blockMaterials):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_9getMaterialIndices(PyObject *__pyx_v_self, PyObject *__pyx_v_blockMaterials); /*proto*/
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_9getMaterialIndices(PyObject *__pyx_v_self, PyObject *__pyx_v_blockMaterials) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getMaterialIndices (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer_8getMaterialIndices(((struct __pyx_obj_9_renderer_BlockRenderer *)__pyx_v_self), ((PyObject *)__pyx_v_blockMaterials));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13BlockRenderer_8getMaterialIndices(struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self, PyObject *__pyx_v_blockMaterials) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getMaterialIndices", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.BlockRenderer.getMaterialIndices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_13BlockRenderer_12generator5(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
+1187:         return blockMaterials == self.materialIndex
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_materialIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_blockMaterials, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;
 1188: 
+1189:     def makeVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_11makeVertices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_11makeVertices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 6, 6, 1); __PYX_ERR(0, 1189, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 6, 6, 2); __PYX_ERR(0, 1189, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 6, 6, 3); __PYX_ERR(0, 1189, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 6, 6, 4); __PYX_ERR(0, 1189, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 6, 6, 5); __PYX_ERR(0, 1189, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeVertices") < 0)) __PYX_ERR(0, 1189, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_facingBlockIndices = values[0];
    __pyx_v_blocks = values[1];
    __pyx_v_blockMaterials = values[2];
    __pyx_v_blockData = values[3];
    __pyx_v_areaBlockLights = values[4];
    __pyx_v_texMap = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeVertices", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1189, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.BlockRenderer.makeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer_10makeVertices(((struct __pyx_obj_9_renderer_BlockRenderer *)__pyx_v_self), __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13BlockRenderer_10makeVertices(struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_12_makeVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_12_makeVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_12_makeVertices(__pyx_ptype_9_renderer___pyx_scope_struct_12_makeVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_13BlockRenderer_12generator5, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeVertices, __pyx_n_s_BlockRenderer_makeVertices, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1189, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.BlockRenderer.makeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_13BlockRenderer_12generator5(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1189, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("makeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_12_makeVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockLight;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_materialIndices;
  struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+1190:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1191:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+1192:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+1193:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1193, __pyx_L1_error)
 1194: 
+1195:         blockLight = areaBlockLights[1:-1, 1:-1, 1:-1]
  __pyx_slice__209 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__209)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__209);
  __Pyx_GIVEREF(__pyx_slice__209);
  __pyx_slice__210 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__210)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__210);
  __Pyx_GIVEREF(__pyx_slice__210);
  __pyx_slice__211 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__211)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__211);
  __Pyx_GIVEREF(__pyx_slice__211);
/* … */
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_tuple__212); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blockLight = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_tuple__212 = PyTuple_Pack(3, __pyx_slice__209, __pyx_slice__210, __pyx_slice__211); if (unlikely(!__pyx_tuple__212)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__212);
  __Pyx_GIVEREF(__pyx_tuple__212);
 1196: 
+1197:         for (direction, exposedFaceIndices) in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1197, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1197, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1197, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1197, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1197, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1197, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1198:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    if (unlikely(__pyx_cur_scope->__pyx_v_self->directionOffsets == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1198, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_cur_scope->__pyx_v_self->directionOffsets, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+1199:             vertexArray = self.makeFaceVertices(direction, materialIndices, exposedFaceIndices, blocks, blockData,
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_makeFaceVertices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
+1200:                                                 blockLight, facingBlockLight, texMap)
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_9 = PyTuple_New(8+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
    PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_cur_scope->__pyx_v_blocks);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
    PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, __pyx_cur_scope->__pyx_v_blockData);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockLight);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockLight);
    PyTuple_SET_ITEM(__pyx_t_9, 5+__pyx_t_8, __pyx_cur_scope->__pyx_v_blockLight);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    PyTuple_SET_ITEM(__pyx_t_9, 6+__pyx_t_8, __pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
    PyTuple_SET_ITEM(__pyx_t_9, 7+__pyx_t_8, __pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+1201:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L7_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1201, __pyx_L1_error)
+1202:             if len(vertexArray):
    __pyx_t_8 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 1202, __pyx_L1_error)
    __pyx_t_10 = (__pyx_t_8 != 0);
    if (__pyx_t_10) {
/* … */
    }
+1203:                 append(vertexArray)
      __pyx_t_11 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1203, __pyx_L1_error)
+1204:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 1204, __pyx_L1_error)
 1205: 
+1206:     def makeArrayList(self, chunkPosition, showRedraw):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_14makeArrayList(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_14makeArrayList(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_chunkPosition = 0;
  PyObject *__pyx_v_showRedraw = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeArrayList (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_chunkPosition,&__pyx_n_s_showRedraw,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunkPosition)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_showRedraw)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeArrayList", 1, 2, 2, 1); __PYX_ERR(0, 1206, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeArrayList") < 0)) __PYX_ERR(0, 1206, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_chunkPosition = values[0];
    __pyx_v_showRedraw = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeArrayList", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1206, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.BlockRenderer.makeArrayList", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer_13makeArrayList(((struct __pyx_obj_9_renderer_BlockRenderer *)__pyx_v_self), __pyx_v_chunkPosition, __pyx_v_showRedraw);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13BlockRenderer_13makeArrayList(struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self, PyObject *__pyx_v_chunkPosition, PyObject *__pyx_v_showRedraw) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeArrayList", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.BlockRenderer.makeArrayList", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1207:         l = gl.glGenLists(1)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glGenLists); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__213, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = __pyx_t_1;
  __pyx_t_1 = 0;
/* … */
  __pyx_tuple__213 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__213)) __PYX_ERR(0, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__213);
  __Pyx_GIVEREF(__pyx_tuple__213);
+1208:         GL.glNewList(l, GL.GL_COMPILE)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glNewList); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_COMPILE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_INCREF(__pyx_v_l);
  __Pyx_GIVEREF(__pyx_v_l);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_l);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1209:         self.drawArrays(chunkPosition, showRedraw)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_drawArrays); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_6) {
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
  }
  __Pyx_INCREF(__pyx_v_chunkPosition);
  __Pyx_GIVEREF(__pyx_v_chunkPosition);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_chunkPosition);
  __Pyx_INCREF(__pyx_v_showRedraw);
  __Pyx_GIVEREF(__pyx_v_showRedraw);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_showRedraw);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1210:         GL.glEndList()
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glEndList); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1210, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1210, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1211:         return l
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_l);
  __pyx_r = __pyx_v_l;
  goto __pyx_L0;
 1212: 
+1213:     def drawArrays(self, chunkPosition, showRedraw):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_16drawArrays(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_16drawArrays(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_chunkPosition = 0;
  PyObject *__pyx_v_showRedraw = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawArrays (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_chunkPosition,&__pyx_n_s_showRedraw,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunkPosition)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_showRedraw)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("drawArrays", 1, 2, 2, 1); __PYX_ERR(0, 1213, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "drawArrays") < 0)) __PYX_ERR(0, 1213, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_chunkPosition = values[0];
    __pyx_v_showRedraw = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("drawArrays", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1213, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.BlockRenderer.drawArrays", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer_15drawArrays(((struct __pyx_obj_9_renderer_BlockRenderer *)__pyx_v_self), __pyx_v_chunkPosition, __pyx_v_showRedraw);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13BlockRenderer_15drawArrays(struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self, PyObject *__pyx_v_chunkPosition, PyObject *__pyx_v_showRedraw) {
  PyObject *__pyx_v_cx = NULL;
  PyObject *__pyx_v_cz = NULL;
  PyObject *__pyx_v_y = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawArrays", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("_renderer.BlockRenderer.drawArrays", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cx);
  __Pyx_XDECREF(__pyx_v_cz);
  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1214:         cx, cz = chunkPosition
  if ((likely(PyTuple_CheckExact(__pyx_v_chunkPosition))) || (PyList_CheckExact(__pyx_v_chunkPosition))) {
    PyObject* sequence = __pyx_v_chunkPosition;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 1214, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_chunkPosition); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
    index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1214, __pyx_L1_error)
    __pyx_t_4 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 1214, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_cx = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_cz = __pyx_t_2;
  __pyx_t_2 = 0;
+1215:         y = 0
  __Pyx_INCREF(__pyx_int_0);
  __pyx_v_y = __pyx_int_0;
+1216:         if hasattr(self, 'y'):
  __pyx_t_5 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_y); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1216, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {
/* … */
  }
+1217:             y = self.y
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_2);
    __pyx_t_2 = 0;
+1218:         with gl.glPushMatrix(GL.GL_MODELVIEW):
  /*with:*/ {
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glPushMatrix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_MODELVIEW); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1218, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1218, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1218, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1218, __pyx_L6_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1218, __pyx_L6_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1218, __pyx_L6_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L17_try_end;
        __pyx_L10_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("_renderer.BlockRenderer.drawArrays", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_14) < 0) __PYX_ERR(0, 1218, __pyx_L12_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_7 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_8, __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1218, __pyx_L12_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1218, __pyx_L12_except_error)
          __Pyx_GOTREF(__pyx_t_15);
          __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          if (__pyx_t_6 < 0) __PYX_ERR(0, 1218, __pyx_L12_except_error)
          __pyx_t_5 = ((!(__pyx_t_6 != 0)) != 0);
          if (__pyx_t_5) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_8);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_8, __pyx_t_14);
            __pyx_t_2 = 0; __pyx_t_8 = 0; __pyx_t_14 = 0; 
            __PYX_ERR(0, 1218, __pyx_L12_except_error)
          }
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          goto __pyx_L11_exception_handled;
        }
        __pyx_L12_except_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        goto __pyx_L1_error;
        __pyx_L11_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        __pyx_L17_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_9) {
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__215, NULL);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1218, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        goto __pyx_L9;
      }
      __pyx_L9:;
    }
    goto __pyx_L22;
    __pyx_L6_error:;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    goto __pyx_L1_error;
    __pyx_L22:;
  }
/* … */
  __pyx_tuple__215 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__215)) __PYX_ERR(0, 1218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__215);
  __Pyx_GIVEREF(__pyx_tuple__215);
+1219:             GL.glTranslate(cx << 4, y, cz << 4)
          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1219, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glTranslate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1219, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_3 = PyNumber_Lshift(__pyx_v_cx, __pyx_int_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1219, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_7 = PyNumber_Lshift(__pyx_v_cz, __pyx_int_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1219, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_1 = NULL;
          __pyx_t_13 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_13 = 1;
            }
          }
          __pyx_t_14 = PyTuple_New(3+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1219, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_14);
          if (__pyx_t_1) {
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1); __pyx_t_1 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_3);
          PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_13, __pyx_t_3);
          __Pyx_INCREF(__pyx_v_y);
          __Pyx_GIVEREF(__pyx_v_y);
          PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_13, __pyx_v_y);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_13, __pyx_t_7);
          __pyx_t_3 = 0;
          __pyx_t_7 = 0;
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1219, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1220: 
+1221:             if showRedraw:
          __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_showRedraw); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1221, __pyx_L10_error)
          if (__pyx_t_6) {
/* … */
          }
+1222:                 GL.glColor(1.0, 0.25, 0.25, 1.0)
            __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1222, __pyx_L10_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glColor); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1222, __pyx_L10_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__214, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1222, __pyx_L10_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__214 = PyTuple_Pack(4, __pyx_float_1_0, __pyx_float_0_25, __pyx_float_0_25, __pyx_float_1_0); if (unlikely(!__pyx_tuple__214)) __PYX_ERR(0, 1222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__214);
  __Pyx_GIVEREF(__pyx_tuple__214);
 1223: 
+1224:             self.drawVertices()
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_drawVertices); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1224, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_14 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_14)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_14);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
            }
          }
          if (__pyx_t_14) {
            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1224, __pyx_L10_error)
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          } else {
            __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1224, __pyx_L10_error)
          }
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1225: 
+1226:     def drawVertices(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_18drawVertices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_18drawVertices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawVertices (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer_17drawVertices(((struct __pyx_obj_9_renderer_BlockRenderer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13BlockRenderer_17drawVertices(struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawVertices", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("_renderer.BlockRenderer.drawVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1227:         if self.vertexArrays:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1227, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+1228:             map(self.drawFaceVertices, self.vertexArrays)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_drawFaceVertices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1229:             # for buf in self.vertexArrays:
 1230:             #    self.drawFaceVertices(buf)
 1231: 
+1232:     def drawFaceVertices(self, buf):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_20drawFaceVertices(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static PyObject *__pyx_pw_9_renderer_13BlockRenderer_20drawFaceVertices(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_13BlockRenderer_19drawFaceVertices(((struct __pyx_obj_9_renderer_BlockRenderer *)__pyx_v_self), ((PyObject *)__pyx_v_buf));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_13BlockRenderer_19drawFaceVertices(CYTHON_UNUSED struct __pyx_obj_9_renderer_BlockRenderer *__pyx_v_self, PyObject *__pyx_v_buf) {
  int __pyx_v_stride;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("_renderer.BlockRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1233:         if not len(buf):
  __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1233, __pyx_L1_error)
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {
/* … */
  }
+1234:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
+1235:         stride = elementByteLength
  __pyx_v_stride = __pyx_v_9_renderer_elementByteLength;
 1236: 
+1237:         GL.glVertexPointer(3, GL.GL_FLOAT, stride, (buf.ravel()))
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glVertexPointer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_9) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1237, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1237, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_9 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_1, __pyx_t_7);
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1238:         GL.glTexCoordPointer(2, GL.GL_FLOAT, stride, (buf.ravel()[3:]))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glTexCoordPointer); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1238, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1238, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_4, 3, 0, NULL, NULL, &__pyx_slice__216, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_int_2);
  __Pyx_GIVEREF(__pyx_int_2);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_int_2);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_1, __pyx_t_6);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__216 = PySlice_New(__pyx_int_3, Py_None, Py_None); if (unlikely(!__pyx_slice__216)) __PYX_ERR(0, 1238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__216);
  __Pyx_GIVEREF(__pyx_slice__216);
+1239:         GL.glColorPointer(4, GL.GL_UNSIGNED_BYTE, stride, (buf.view(dtype=numpy.uint8).ravel()[20:]))
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glColorPointer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_GL_UNSIGNED_BYTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_view); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_uint8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_11) < 0) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_11) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1239, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1239, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_5, 20, 0, NULL, NULL, &__pyx_slice__217, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_11 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_INCREF(__pyx_int_4);
  __Pyx_GIVEREF(__pyx_int_4);
  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_int_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_1, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_1, __pyx_t_4);
  __pyx_t_6 = 0;
  __pyx_t_9 = 0;
  __pyx_t_4 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__217 = PySlice_New(__pyx_int_20, Py_None, Py_None); if (unlikely(!__pyx_slice__217)) __PYX_ERR(0, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__217);
  __Pyx_GIVEREF(__pyx_slice__217);
 1240: 
+1241:         GL.glDrawArrays(GL.GL_QUADS, 0, len(buf) * 4)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1241, __pyx_L1_error)
  __pyx_t_8 = PyInt_FromSsize_t((__pyx_t_1 * 4)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_9) {
    __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_1, __pyx_t_4);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_1, __pyx_t_8);
  __pyx_t_4 = 0;
  __pyx_t_8 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1242: 
 1243: 
+1244: class EntityRendererGeneric(BlockRenderer):
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_EntityRendererGeneric, __pyx_n_s_EntityRendererGeneric, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_EntityRendererGeneric, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EntityRendererGeneric, __pyx_t_12) < 0) __PYX_ERR(0, 1244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1245:     renderstate = ChunkCalculator.renderstateEntity
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_renderstateEntity); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_12) < 0) __PYX_ERR(0, 1245, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+1246:     detailLevels = (0, 1, 2)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_detailLevels, __pyx_tuple__677) < 0) __PYX_ERR(0, 1246, __pyx_L1_error)
/* … */
  __pyx_tuple__677 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_1, __pyx_int_2); if (unlikely(!__pyx_tuple__677)) __PYX_ERR(0, 1246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__677);
  __Pyx_GIVEREF(__pyx_tuple__677);
 1247: 
+1248:     def drawFaceVertices(self, buf):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21EntityRendererGeneric_1drawFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21EntityRendererGeneric_1drawFaceVertices = {"drawFaceVertices", (PyCFunction)__pyx_pw_9_renderer_21EntityRendererGeneric_1drawFaceVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21EntityRendererGeneric_1drawFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_buf,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buf)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("drawFaceVertices", 1, 2, 2, 1); __PYX_ERR(0, 1248, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "drawFaceVertices") < 0)) __PYX_ERR(0, 1248, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_buf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("drawFaceVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1248, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.EntityRendererGeneric.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21EntityRendererGeneric_drawFaceVertices(__pyx_self, __pyx_v_self, __pyx_v_buf);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21EntityRendererGeneric_drawFaceVertices(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  int __pyx_v_stride;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("_renderer.EntityRendererGeneric.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__678 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_stride); if (unlikely(!__pyx_tuple__678)) __PYX_ERR(0, 1248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__678);
  __Pyx_GIVEREF(__pyx_tuple__678);
/* … */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21EntityRendererGeneric_1drawFaceVertices, 0, __pyx_n_s_EntityRendererGeneric_drawFaceVe, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__679)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawFaceVertices, __pyx_t_12) < 0) __PYX_ERR(0, 1248, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_codeobj__679 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__678, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_drawFaceVertices, 1248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__679)) __PYX_ERR(0, 1248, __pyx_L1_error)
+1249:         if not len(buf):
  __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1249, __pyx_L1_error)
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {
/* … */
  }
+1250:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
+1251:         stride = elementByteLength
  __pyx_v_stride = __pyx_v_9_renderer_elementByteLength;
 1252: 
+1253:         GL.glVertexPointer(3, GL.GL_FLOAT, stride, (buf.ravel()))
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glVertexPointer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_9) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1253, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1253, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_9 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_1, __pyx_t_7);
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1254:         GL.glTexCoordPointer(2, GL.GL_FLOAT, stride, (buf.ravel()[3:]))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glTexCoordPointer); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1254, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1254, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_4, 3, 0, NULL, NULL, &__pyx_slice__218, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_int_2);
  __Pyx_GIVEREF(__pyx_int_2);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_int_2);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_1, __pyx_t_6);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__218 = PySlice_New(__pyx_int_3, Py_None, Py_None); if (unlikely(!__pyx_slice__218)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__218);
  __Pyx_GIVEREF(__pyx_slice__218);
+1255:         GL.glColorPointer(4, GL.GL_UNSIGNED_BYTE, stride, (buf.view(dtype=numpy.uint8).ravel()[20:]))
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glColorPointer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_GL_UNSIGNED_BYTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_view); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_uint8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_11) < 0) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_11) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1255, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1255, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_5, 20, 0, NULL, NULL, &__pyx_slice__219, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_11 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_INCREF(__pyx_int_4);
  __Pyx_GIVEREF(__pyx_int_4);
  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_int_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_1, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_1, __pyx_t_4);
  __pyx_t_6 = 0;
  __pyx_t_9 = 0;
  __pyx_t_4 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__219 = PySlice_New(__pyx_int_20, Py_None, Py_None); if (unlikely(!__pyx_slice__219)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__219);
  __Pyx_GIVEREF(__pyx_slice__219);
 1256: 
+1257:         GL.glDepthMask(False)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glDepthMask); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__220, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__220 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(0, 1257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__220);
  __Pyx_GIVEREF(__pyx_tuple__220);
 1258: 
+1259:         GL.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glPolygonMode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_FRONT_AND_BACK); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_LINE); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_t_9);
  __pyx_t_4 = 0;
  __pyx_t_9 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1260: 
+1261:         GL.glLineWidth(2.0)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glLineWidth); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__221, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__221 = PyTuple_Pack(1, __pyx_float_2_0); if (unlikely(!__pyx_tuple__221)) __PYX_ERR(0, 1261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__221);
  __Pyx_GIVEREF(__pyx_tuple__221);
+1262:         GL.glDrawArrays(GL.GL_QUADS, 0, len(buf) * 4)
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1262, __pyx_L1_error)
  __pyx_t_11 = PyInt_FromSsize_t((__pyx_t_1 * 4)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_t_9);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_1, __pyx_t_11);
  __pyx_t_9 = 0;
  __pyx_t_11 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1263: 
+1264:         GL.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glPolygonMode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_FRONT_AND_BACK); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_FILL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_6) {
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_1, __pyx_t_9);
  __pyx_t_11 = 0;
  __pyx_t_9 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1265: 
+1266:         GL.glPolygonOffset(DepthOffset.TerrainWire, DepthOffset.TerrainWire)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glPolygonOffset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_DepthOffset); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_TerrainWire); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_DepthOffset); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_TerrainWire); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_1, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_t_11);
  __pyx_t_9 = 0;
  __pyx_t_11 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1267:         with gl.glEnable(GL.GL_POLYGON_OFFSET_FILL, GL.GL_DEPTH_TEST):
  /*with:*/ {
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_POLYGON_OFFSET_FILL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    __pyx_t_1 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_1 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_t_11);
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_t_9);
    __pyx_t_11 = 0;
    __pyx_t_9 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1267, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (__pyx_t_9) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1267, __pyx_L4_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    } else {
      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1267, __pyx_L4_error)
    }
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /*try:*/ {
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        goto __pyx_L15_try_end;
        __pyx_L8_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("_renderer.EntityRendererGeneric.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_4) < 0) __PYX_ERR(0, 1267, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_6 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1267, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_6, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1267, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_16);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_16);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(0, 1267, __pyx_L10_except_error)
          __pyx_t_17 = ((!(__pyx_t_2 != 0)) != 0);
          if (__pyx_t_17) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_8);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_8, __pyx_t_4);
            __pyx_t_3 = 0; __pyx_t_8 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(0, 1267, __pyx_L10_except_error)
          }
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        __pyx_L15_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_12) {
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__222, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1267, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L19;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    goto __pyx_L1_error;
    __pyx_L19:;
  }
/* … */
  __pyx_tuple__222 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__222)) __PYX_ERR(0, 1267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__222);
  __Pyx_GIVEREF(__pyx_tuple__222);
+1268:             GL.glDrawArrays(GL.GL_QUADS, 0, len(buf) * 4)
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1268, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1268, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1268, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1268, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1268, __pyx_L8_error)
          __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_1 * 4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1268, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_11 = NULL;
          __pyx_t_1 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_11)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_11);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_1 = 1;
            }
          }
          __pyx_t_4 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1268, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_4);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11); __pyx_t_11 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_9);
          PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_1, __pyx_t_9);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_1, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_1, __pyx_t_6);
          __pyx_t_9 = 0;
          __pyx_t_6 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1268, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1269:         GL.glDepthMask(True)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glDepthMask); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__223, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__223 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__223)) __PYX_ERR(0, 1269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__223);
  __Pyx_GIVEREF(__pyx_tuple__223);
 1270: 
+1271:     @staticmethod
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_11, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_computeVertices, __pyx_t_12) < 0) __PYX_ERR(0, 1272, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+1272:     def _computeVertices(positions, colors, offset=False, chunkPosition=(0, 0)):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21EntityRendererGeneric_3_computeVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21EntityRendererGeneric_3_computeVertices = {"_computeVertices", (PyCFunction)__pyx_pw_9_renderer_21EntityRendererGeneric_3_computeVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21EntityRendererGeneric_3_computeVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_positions = 0;
  PyObject *__pyx_v_colors = 0;
  PyObject *__pyx_v_offset = 0;
  PyObject *__pyx_v_chunkPosition = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_computeVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_positions,&__pyx_n_s_colors,&__pyx_n_s_offset,&__pyx_n_s_chunkPosition,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)((PyObject *)Py_False));
    values[3] = ((PyObject *)((PyObject*)__pyx_tuple__224));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_positions)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_colors)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_computeVertices", 0, 2, 4, 1); __PYX_ERR(0, 1272, __pyx_L3_error)
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunkPosition);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_computeVertices") < 0)) __PYX_ERR(0, 1272, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_positions = values[0];
    __pyx_v_colors = values[1];
    __pyx_v_offset = values[2];
    __pyx_v_chunkPosition = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_computeVertices", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1272, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.EntityRendererGeneric._computeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21EntityRendererGeneric_2_computeVertices(__pyx_self, __pyx_v_positions, __pyx_v_colors, __pyx_v_offset, __pyx_v_chunkPosition);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21EntityRendererGeneric_2_computeVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_positions, PyObject *__pyx_v_colors, PyObject *__pyx_v_offset, PyObject *__pyx_v_chunkPosition) {
  PyObject *__pyx_v_cx = NULL;
  PyObject *__pyx_v_cz = NULL;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_v_z = NULL;
  PyObject *__pyx_v_vertexArray = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_computeVertices", 0);
  __Pyx_INCREF(__pyx_v_positions);
/* … */
  __pyx_tuple__224 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__224)) __PYX_ERR(0, 1272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__224);
  __Pyx_GIVEREF(__pyx_tuple__224);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.EntityRendererGeneric._computeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cx);
  __Pyx_XDECREF(__pyx_v_cz);
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XDECREF(__pyx_v_z);
  __Pyx_XDECREF(__pyx_v_vertexArray);
  __Pyx_XDECREF(__pyx_v_positions);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_18TileEntityRenderer_2generator6(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__680 = PyTuple_Pack(9, __pyx_n_s_positions, __pyx_n_s_colors, __pyx_n_s_offset, __pyx_n_s_chunkPosition, __pyx_n_s_cx, __pyx_n_s_cz, __pyx_n_s_x, __pyx_n_s_z, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__680)) __PYX_ERR(0, 1272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__680);
  __Pyx_GIVEREF(__pyx_tuple__680);
  __pyx_codeobj__681 = (PyObject*)__Pyx_PyCode_New(4, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__680, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_computeVertices, 1272, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__681)) __PYX_ERR(0, 1272, __pyx_L1_error)
/* … */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21EntityRendererGeneric_3_computeVertices, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_EntityRendererGeneric__computeVe, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__681)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_12, __pyx_tuple__682);
  __pyx_tuple__682 = PyTuple_Pack(2, ((PyObject *)Py_False), ((PyObject*)__pyx_tuple__224)); if (unlikely(!__pyx_tuple__682)) __PYX_ERR(0, 1272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__682);
  __Pyx_GIVEREF(__pyx_tuple__682);
+1273:         cx, cz = chunkPosition
  if ((likely(PyTuple_CheckExact(__pyx_v_chunkPosition))) || (PyList_CheckExact(__pyx_v_chunkPosition))) {
    PyObject* sequence = __pyx_v_chunkPosition;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 1273, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_chunkPosition); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
    index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1273, __pyx_L1_error)
    __pyx_t_4 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 1273, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_cx = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_cz = __pyx_t_2;
  __pyx_t_2 = 0;
+1274:         x = cx << 4
  __pyx_t_2 = PyNumber_Lshift(__pyx_v_cx, __pyx_int_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_x = __pyx_t_2;
  __pyx_t_2 = 0;
+1275:         z = cz << 4
  __pyx_t_2 = PyNumber_Lshift(__pyx_v_cz, __pyx_int_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_z = __pyx_t_2;
  __pyx_t_2 = 0;
 1276: 
+1277:         vertexArray = numpy.zeros(shape=(len(positions), 6, 4, 6), dtype='float32')
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_Length(__pyx_v_positions); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1277, __pyx_L1_error)
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
  __Pyx_INCREF(__pyx_int_6);
  __Pyx_GIVEREF(__pyx_int_6);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_6);
  __Pyx_INCREF(__pyx_int_4);
  __Pyx_GIVEREF(__pyx_int_4);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_int_4);
  __Pyx_INCREF(__pyx_int_6);
  __Pyx_GIVEREF(__pyx_int_6);
  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_int_6);
  __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 1277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 1277, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_vertexArray = __pyx_t_6;
  __pyx_t_6 = 0;
+1278:         if positions:
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_positions); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1278, __pyx_L1_error)
  if (__pyx_t_7) {
/* … */
  }
+1279:             positions = numpy.array(positions)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_positions); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1279, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1279, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_v_positions);
      __Pyx_GIVEREF(__pyx_v_positions);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_positions);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1279, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_positions, __pyx_t_6);
    __pyx_t_6 = 0;
+1280:             positions[:, (0, 2)] -= (x, z)
  __pyx_slice__225 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__225)) __PYX_ERR(0, 1280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__225);
  __Pyx_GIVEREF(__pyx_slice__225);
  __pyx_tuple__226 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_2); if (unlikely(!__pyx_tuple__226)) __PYX_ERR(0, 1280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__226);
  __Pyx_GIVEREF(__pyx_tuple__226);
/* … */
    __Pyx_INCREF(__pyx_tuple__227);
    __pyx_t_8 = __pyx_tuple__227;
    __pyx_t_6 = PyObject_GetItem(__pyx_v_positions, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_x);
    __Pyx_GIVEREF(__pyx_v_x);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x);
    __Pyx_INCREF(__pyx_v_z);
    __Pyx_GIVEREF(__pyx_v_z);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_z);
    __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(__pyx_v_positions, __pyx_t_8, __pyx_t_3) < 0)) __PYX_ERR(0, 1280, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__227 = PyTuple_Pack(2, __pyx_slice__225, __pyx_tuple__226); if (unlikely(!__pyx_tuple__227)) __PYX_ERR(0, 1280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__227);
  __Pyx_GIVEREF(__pyx_tuple__227);
+1281:             if offset:
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_offset); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1281, __pyx_L1_error)
    if (__pyx_t_7) {
/* … */
    }
+1282:                 positions -= 0.5
      __pyx_t_3 = __Pyx_PyFloat_SubtractObjC(__pyx_v_positions, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1282, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_positions, __pyx_t_3);
      __pyx_t_3 = 0;
 1283: 
+1284:             vertexArray.view('uint8')[_RGBA] = colors
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__228, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGBA); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_3, __pyx_v_colors) < 0)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__228 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__228)) __PYX_ERR(0, 1284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__228);
  __Pyx_GIVEREF(__pyx_tuple__228);
+1285:             vertexArray[_XYZ] = positions[:, numpy.newaxis, numpy.newaxis, :]
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__229 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__229)) __PYX_ERR(0, 1285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__229);
  __Pyx_GIVEREF(__pyx_slice__229);
    __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_slice__229);
    __Pyx_GIVEREF(__pyx_slice__229);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_slice__229);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_6);
    __Pyx_INCREF(__pyx_slice__230);
    __Pyx_GIVEREF(__pyx_slice__230);
    PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_slice__230);
    __pyx_t_1 = 0;
    __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_GetItem(__pyx_v_positions, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_v_vertexArray, __pyx_t_3, __pyx_t_6) < 0)) __PYX_ERR(0, 1285, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_slice__230 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__230)) __PYX_ERR(0, 1285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__230);
  __Pyx_GIVEREF(__pyx_slice__230);
+1286:             vertexArray[_XYZ] += faceVertexTemplates[_XYZ]
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__pyx_v_9_renderer_faceVertexTemplates == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1286, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_GetItem(__pyx_v_9_renderer_faceVertexTemplates, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(PyObject_SetItem(__pyx_v_vertexArray, __pyx_t_6, __pyx_t_1) < 0)) __PYX_ERR(0, 1286, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1287:             vertexArray.shape = (len(positions) * 6, 4, 6)
    __pyx_t_5 = PyObject_Length(__pyx_v_positions); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1287, __pyx_L1_error)
    __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_5 * 6)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_4);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_6);
    __pyx_t_6 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_vertexArray, __pyx_n_s_shape, __pyx_t_1) < 0) __PYX_ERR(0, 1287, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1288:         return vertexArray
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vertexArray);
  __pyx_r = __pyx_v_vertexArray;
  goto __pyx_L0;
 1289: 
 1290: 
+1291: class TileEntityRenderer(EntityRendererGeneric):
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EntityRendererGeneric); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_TileEntityRenderer, __pyx_n_s_TileEntityRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_TileEntityRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TileEntityRenderer, __pyx_t_12) < 0) __PYX_ERR(0, 1291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1292:     layer = Layer.TileEntities
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_TileEntities); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_layer, __pyx_t_12) < 0) __PYX_ERR(0, 1292, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 1293: 
+1294:     def makeChunkVertices(self, chunk):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18TileEntityRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18TileEntityRenderer_1makeChunkVertices = {"makeChunkVertices", (PyCFunction)__pyx_pw_9_renderer_18TileEntityRenderer_1makeChunkVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18TileEntityRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunk = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunk,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, 1); __PYX_ERR(0, 1294, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeChunkVertices") < 0)) __PYX_ERR(0, 1294, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunk = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1294, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.TileEntityRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18TileEntityRenderer_makeChunkVertices(__pyx_self, __pyx_v_self, __pyx_v_chunk);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18TileEntityRenderer_makeChunkVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunk) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_13_makeChunkVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_13_makeChunkVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_13_makeChunkVertices(__pyx_ptype_9_renderer___pyx_scope_struct_13_makeChunkVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_chunk = __pyx_v_chunk;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_18TileEntityRenderer_2generator6, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeChunkVertices, __pyx_n_s_TileEntityRenderer_makeChunkVert, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1294, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.TileEntityRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_18TileEntityRenderer_2generator6(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1294, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_15MonsterRenderer_2generator7(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__683 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_chunk, __pyx_n_s_tilePositions, __pyx_n_s_append, __pyx_n_s_pos, __pyx_n_s_i, __pyx_n_s_ent, __pyx_n_s_tiles); if (unlikely(!__pyx_tuple__683)) __PYX_ERR(0, 1294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__683);
  __Pyx_GIVEREF(__pyx_tuple__683);
/* … */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18TileEntityRenderer_1makeChunkVertices, 0, __pyx_n_s_TileEntityRenderer_makeChunkVert, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__684)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeChunkVertices, __pyx_t_12) < 0) __PYX_ERR(0, 1294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_codeobj__684 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__683, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeChunkVertices, 1294, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__684)) __PYX_ERR(0, 1294, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_13_makeChunkVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_chunk;
  PyObject *__pyx_v_ent;
  PyObject *__pyx_v_i;
  PyObject *__pyx_v_pos;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_tilePositions;
  PyObject *__pyx_v_tiles;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+1295:         tilePositions = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_tilePositions = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1296:         append = tilePositions.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_tilePositions, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+1297:         pos = pymclevel.TileEntity.pos
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_TileEntity); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_pos = __pyx_t_1;
  __pyx_t_1 = 0;
+1298:         for i, ent in enumerate(chunk.TileEntities):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_TileEntities); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1298, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1298, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1298, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1298, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_ent);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_ent, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
/* … */
    __pyx_L4_continue:;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1299:             if i % 10 == 0:
    __pyx_t_2 = __Pyx_PyInt_RemainderObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_10, 10, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_2, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1299, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_7) {
/* … */
    }
+1300:                 yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
      __Pyx_XGIVEREF(__pyx_t_3);
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
      __pyx_cur_scope->__pyx_t_3 = __pyx_t_5;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L7_resume_from_yield:;
      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = 0;
      __Pyx_XGOTREF(__pyx_t_3);
      __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
      __pyx_t_5 = __pyx_cur_scope->__pyx_t_3;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1300, __pyx_L1_error)
+1301:             if 'x' not in ent:
    __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_x, __pyx_cur_scope->__pyx_v_ent, Py_NE)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1301, __pyx_L1_error)
    __pyx_t_8 = (__pyx_t_7 != 0);
    if (__pyx_t_8) {
/* … */
    }
+1302:                 continue
      goto __pyx_L4_continue;
+1303:             append(pos(ent))
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pos);
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_pos; __pyx_t_9 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_9) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_ent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ent);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ent);
      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_cur_scope->__pyx_v_ent);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_11 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_tilePositions, __pyx_t_6); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1303, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1304:         tiles = self._computeVertices(tilePositions, (0xff, 0xff, 0x33, 0x44), chunkPosition=chunk.chunkPosition)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_computeVertices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_tilePositions);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tilePositions);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_tilePositions);
  __Pyx_INCREF(__pyx_tuple__231);
  __Pyx_GIVEREF(__pyx_tuple__231);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_tuple__231);
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_chunkPosition, __pyx_t_2) < 0) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_tiles = __pyx_t_2;
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__231 = PyTuple_Pack(4, __pyx_int_255, __pyx_int_255, __pyx_int_51, __pyx_int_68); if (unlikely(!__pyx_tuple__231)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__231);
  __Pyx_GIVEREF(__pyx_tuple__231);
+1305:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L9_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1305, __pyx_L1_error)
+1306:         self.vertexArrays = [tiles]
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_tiles);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tiles);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_tiles);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_t_2) < 0) __PYX_ERR(0, 1306, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1307: 
 1308: 
+1309: class BaseEntityRenderer(EntityRendererGeneric):
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_EntityRendererGeneric); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_BaseEntityRenderer, __pyx_n_s_BaseEntityRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_BaseEntityRenderer, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BaseEntityRenderer, __pyx_t_12) < 0) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1310:     pass
 1311: 
 1312: 
+1313: class MonsterRenderer(BaseEntityRenderer):
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BaseEntityRenderer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_MonsterRenderer, __pyx_n_s_MonsterRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MonsterRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MonsterRenderer, __pyx_t_12) < 0) __PYX_ERR(0, 1313, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1314:     layer = Layer.Entities  # xxx Monsters
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Entities); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_layer, __pyx_t_12) < 0) __PYX_ERR(0, 1314, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+1315:     notMonsters = {"Item", "XPOrb", "Painting", "ItemFrame", "ArmorStand"}
  __pyx_t_12 = PySet_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PySet_Add(__pyx_t_12, __pyx_n_s_Item) < 0) __PYX_ERR(0, 1315, __pyx_L1_error)
  if (PySet_Add(__pyx_t_12, __pyx_n_s_XPOrb) < 0) __PYX_ERR(0, 1315, __pyx_L1_error)
  if (PySet_Add(__pyx_t_12, __pyx_n_s_Painting) < 0) __PYX_ERR(0, 1315, __pyx_L1_error)
  if (PySet_Add(__pyx_t_12, __pyx_n_s_ItemFrame) < 0) __PYX_ERR(0, 1315, __pyx_L1_error)
  if (PySet_Add(__pyx_t_12, __pyx_n_s_ArmorStand) < 0) __PYX_ERR(0, 1315, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_notMonsters, __pyx_t_12) < 0) __PYX_ERR(0, 1315, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 1316: 
+1317:     def makeChunkVertices(self, chunk):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_15MonsterRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_15MonsterRenderer_1makeChunkVertices = {"makeChunkVertices", (PyCFunction)__pyx_pw_9_renderer_15MonsterRenderer_1makeChunkVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_15MonsterRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunk = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunk,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, 1); __PYX_ERR(0, 1317, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeChunkVertices") < 0)) __PYX_ERR(0, 1317, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunk = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1317, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MonsterRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_15MonsterRenderer_makeChunkVertices(__pyx_self, __pyx_v_self, __pyx_v_chunk);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_15MonsterRenderer_makeChunkVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunk) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_14_makeChunkVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_14_makeChunkVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_14_makeChunkVertices(__pyx_ptype_9_renderer___pyx_scope_struct_14_makeChunkVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_chunk = __pyx_v_chunk;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_15MonsterRenderer_2generator7, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeChunkVertices, __pyx_n_s_MonsterRenderer_makeChunkVertice, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1317, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.MonsterRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_15MonsterRenderer_2generator7(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1317, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_14EntityRenderer_2generator8(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__685 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_chunk, __pyx_n_s_monsterPositions, __pyx_n_s_append, __pyx_n_s_pos_func, __pyx_n_s_notMonsters, __pyx_n_s_i, __pyx_n_s_ent, __pyx_n_s_id, __pyx_n_s_pos, __pyx_n_s_monsters); if (unlikely(!__pyx_tuple__685)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__685);
  __Pyx_GIVEREF(__pyx_tuple__685);
/* … */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_15MonsterRenderer_1makeChunkVertices, 0, __pyx_n_s_MonsterRenderer_makeChunkVertice, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__686)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeChunkVertices, __pyx_t_12) < 0) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_codeobj__686 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__685, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeChunkVertices, 1317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__686)) __PYX_ERR(0, 1317, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_14_makeChunkVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_chunk;
  PyObject *__pyx_v_ent;
  PyObject *__pyx_v_i;
  PyObject *__pyx_v_id;
  PyObject *__pyx_v_monsterPositions;
  PyObject *__pyx_v_monsters;
  PyObject *__pyx_v_notMonsters;
  PyObject *__pyx_v_pos;
  PyObject *__pyx_v_pos_func;
  PyObject *__pyx_v_self;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+1318:         monsterPositions = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_monsterPositions = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1319:         append = monsterPositions.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_monsterPositions, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+1320:         pos_func = pymclevel.Entity.pos
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Entity); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_pos_func = __pyx_t_1;
  __pyx_t_1 = 0;
+1321:         notMonsters = MCEDIT_DEFS.get('notMonsters', self.notMonsters)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MCEDIT_DEFS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_notMonsters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_n_s_notMonsters);
  __Pyx_GIVEREF(__pyx_n_s_notMonsters);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_n_s_notMonsters);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_notMonsters = __pyx_t_1;
  __pyx_t_1 = 0;
+1322:         for i, ent in enumerate(chunk.Entities):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_Entities); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_6 = __pyx_t_3; __Pyx_INCREF(__pyx_t_6); __pyx_t_5 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1322, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_6))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_6)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1322, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1322, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1322, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1322, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_7(__pyx_t_6);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1322, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_ent);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_ent, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
/* … */
    __pyx_L4_continue:;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1323:             if i % 10 == 0:
    __pyx_t_3 = __Pyx_PyInt_RemainderObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_10, 10, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_3, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1323, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_8) {
/* … */
    }
+1324:                 yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
      __Pyx_XGIVEREF(__pyx_t_6);
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
      __pyx_cur_scope->__pyx_t_3 = __pyx_t_7;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L7_resume_from_yield:;
      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
      __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
      __pyx_cur_scope->__pyx_t_2 = 0;
      __Pyx_XGOTREF(__pyx_t_6);
      __pyx_t_7 = __pyx_cur_scope->__pyx_t_3;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1324, __pyx_L1_error)
+1325:             id = ent["id"].value
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ent, __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_id);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_id, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+1326:             if id in notMonsters:
    __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_cur_scope->__pyx_v_id, __pyx_cur_scope->__pyx_v_notMonsters, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1326, __pyx_L1_error)
    __pyx_t_9 = (__pyx_t_8 != 0);
    if (__pyx_t_9) {
/* … */
    }
+1327:                 continue
      goto __pyx_L4_continue;
+1328:             pos = pos_func(ent)
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pos_func);
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_pos_func; __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_ent); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1328, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1328, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ent);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ent);
      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_cur_scope->__pyx_v_ent);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1328, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_pos);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_pos, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+1329:             pos[1] += 0.5
    __pyx_t_11 = 1;
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_pos, __pyx_t_11, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyFloat_AddObjC(__pyx_t_3, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(__Pyx_SetItemInt(__pyx_cur_scope->__pyx_v_pos, __pyx_t_11, __pyx_t_2, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(0, 1329, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1330:             append(pos)
    __pyx_t_12 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_monsterPositions, __pyx_cur_scope->__pyx_v_pos); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 1330, __pyx_L1_error)
 1331: 
+1332:         monsters = self._computeVertices(monsterPositions,
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_computeVertices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
/* … */
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_monsterPositions);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_monsterPositions);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_monsterPositions);
  __Pyx_INCREF(__pyx_tuple__232);
  __Pyx_GIVEREF(__pyx_tuple__232);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_tuple__232);
/* … */
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_monsters = __pyx_t_3;
  __pyx_t_3 = 0;
+1333:                                          (0xff, 0x22, 0x22, 0x44),
  __pyx_tuple__232 = PyTuple_Pack(4, __pyx_int_255, __pyx_int_34, __pyx_int_34, __pyx_int_68); if (unlikely(!__pyx_tuple__232)) __PYX_ERR(0, 1333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__232);
  __Pyx_GIVEREF(__pyx_tuple__232);
+1334:                                          offset=True,
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_offset, Py_True) < 0) __PYX_ERR(0, 1334, __pyx_L1_error)
+1335:                                          chunkPosition=chunk.chunkPosition)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunkPosition, __pyx_t_3) < 0) __PYX_ERR(0, 1334, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1336:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L9_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1336, __pyx_L1_error)
+1337:         self.vertexArrays = [monsters]
  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_monsters);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_monsters);
  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_monsters);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_t_3) < 0) __PYX_ERR(0, 1337, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1338: 
 1339: 
+1340: class EntityRenderer(BaseEntityRenderer):
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_BaseEntityRenderer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_EntityRenderer, __pyx_n_s_EntityRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_EntityRenderer, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EntityRenderer, __pyx_t_12) < 0) __PYX_ERR(0, 1340, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1341:     @staticmethod
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_11, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeChunkVertices, __pyx_t_12) < 0) __PYX_ERR(0, 1342, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+1342:     def makeChunkVertices(chunk):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_14EntityRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_v_chunk); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_14EntityRenderer_1makeChunkVertices = {"makeChunkVertices", (PyCFunction)__pyx_pw_9_renderer_14EntityRenderer_1makeChunkVertices, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_14EntityRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_v_chunk) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_14EntityRenderer_makeChunkVertices(__pyx_self, ((PyObject *)__pyx_v_chunk));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_14EntityRenderer_makeChunkVertices(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_chunk) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_15_makeChunkVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_15_makeChunkVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_15_makeChunkVertices(__pyx_ptype_9_renderer___pyx_scope_struct_15_makeChunkVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_chunk = __pyx_v_chunk;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_14EntityRenderer_2generator8, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeChunkVertices, __pyx_n_s_EntityRenderer_makeChunkVertices, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1342, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.EntityRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_14EntityRenderer_2generator8(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1342, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_12ItemRenderer_2generator9(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__687 = PyTuple_Pack(1, __pyx_n_s_chunk); if (unlikely(!__pyx_tuple__687)) __PYX_ERR(0, 1342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__687);
  __Pyx_GIVEREF(__pyx_tuple__687);
/* … */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_14EntityRenderer_1makeChunkVertices, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_EntityRenderer_makeChunkVertices, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__688)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_codeobj__688 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__687, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeChunkVertices, 1342, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__688)) __PYX_ERR(0, 1342, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_15_makeChunkVertices {
  PyObject_HEAD
  PyObject *__pyx_v_chunk;
};

+1343:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1343, __pyx_L1_error)
 1344: 
 1345: 
+1346: class ItemRenderer(BaseEntityRenderer):
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BaseEntityRenderer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_ItemRenderer, __pyx_n_s_ItemRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_ItemRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ItemRenderer, __pyx_t_12) < 0) __PYX_ERR(0, 1346, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1347:     layer = Layer.Items
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Items); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_layer, __pyx_t_12) < 0) __PYX_ERR(0, 1347, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 1348: 
+1349:     def makeChunkVertices(self, chunk):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_12ItemRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_12ItemRenderer_1makeChunkVertices = {"makeChunkVertices", (PyCFunction)__pyx_pw_9_renderer_12ItemRenderer_1makeChunkVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_12ItemRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunk = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunk,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, 1); __PYX_ERR(0, 1349, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeChunkVertices") < 0)) __PYX_ERR(0, 1349, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunk = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1349, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ItemRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_12ItemRenderer_makeChunkVertices(__pyx_self, __pyx_v_self, __pyx_v_chunk);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_12ItemRenderer_makeChunkVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunk) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_16_makeChunkVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_16_makeChunkVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_16_makeChunkVertices(__pyx_ptype_9_renderer___pyx_scope_struct_16_makeChunkVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_chunk = __pyx_v_chunk;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_12ItemRenderer_2generator9, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeChunkVertices, __pyx_n_s_ItemRenderer_makeChunkVertices, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1349, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.ItemRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_12ItemRenderer_2generator9(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1349, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_17TileTicksRenderer_2generator10(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__689 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_chunk, __pyx_n_s_entityPositions, __pyx_n_s_entityColors, __pyx_n_s_colorMap, __pyx_n_s_pos_append, __pyx_n_s_color_append, __pyx_n_s_pos_func, __pyx_n_s_i, __pyx_n_s_ent, __pyx_n_s_color, __pyx_n_s_pos, __pyx_n_s_noRenderDelta, __pyx_n_s_entities); if (unlikely(!__pyx_tuple__689)) __PYX_ERR(0, 1349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__689);
  __Pyx_GIVEREF(__pyx_tuple__689);
/* … */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_12ItemRenderer_1makeChunkVertices, 0, __pyx_n_s_ItemRenderer_makeChunkVertices, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__690)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeChunkVertices, __pyx_t_12) < 0) __PYX_ERR(0, 1349, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_codeobj__690 = (PyObject*)__Pyx_PyCode_New(2, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__689, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeChunkVertices, 1349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__690)) __PYX_ERR(0, 1349, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_16_makeChunkVertices {
  PyObject_HEAD
  PyObject *__pyx_v_chunk;
  PyObject *__pyx_v_color;
  PyObject *__pyx_v_colorMap;
  PyObject *__pyx_v_color_append;
  PyObject *__pyx_v_ent;
  PyObject *__pyx_v_entities;
  PyObject *__pyx_v_entityColors;
  PyObject *__pyx_v_entityPositions;
  PyObject *__pyx_v_i;
  PyObject *__pyx_v_noRenderDelta;
  PyObject *__pyx_v_pos;
  PyObject *__pyx_v_pos_append;
  PyObject *__pyx_v_pos_func;
  PyObject *__pyx_v_self;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+1350:         entityPositions = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_entityPositions = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1351:         entityColors = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_entityColors = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 1352:         colorMap = {
+1353:             "Item": (0x22, 0xff, 0x22, 0x5f),
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_Item, __pyx_tuple__233) < 0) __PYX_ERR(0, 1353, __pyx_L1_error)
/* … */
  __pyx_tuple__233 = PyTuple_Pack(4, __pyx_int_34, __pyx_int_255, __pyx_int_34, __pyx_int_95); if (unlikely(!__pyx_tuple__233)) __PYX_ERR(0, 1353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__233);
  __Pyx_GIVEREF(__pyx_tuple__233);
+1354:             "XPOrb": (0x88, 0xff, 0x88, 0x5f),
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_XPOrb, __pyx_tuple__234) < 0) __PYX_ERR(0, 1353, __pyx_L1_error)
/* … */
  __pyx_tuple__234 = PyTuple_Pack(4, __pyx_int_136, __pyx_int_255, __pyx_int_136, __pyx_int_95); if (unlikely(!__pyx_tuple__234)) __PYX_ERR(0, 1354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__234);
  __Pyx_GIVEREF(__pyx_tuple__234);
+1355:             "Painting": (134, 96, 67, 0x5f),
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_Painting, __pyx_tuple__235) < 0) __PYX_ERR(0, 1353, __pyx_L1_error)
/* … */
  __pyx_tuple__235 = PyTuple_Pack(4, __pyx_int_134, __pyx_int_96, __pyx_int_67, __pyx_int_95); if (unlikely(!__pyx_tuple__235)) __PYX_ERR(0, 1355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__235);
  __Pyx_GIVEREF(__pyx_tuple__235);
+1356:             "ItemFrame": (134, 96, 67, 0x5f),
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ItemFrame, __pyx_tuple__236) < 0) __PYX_ERR(0, 1353, __pyx_L1_error)
/* … */
  __pyx_tuple__236 = PyTuple_Pack(4, __pyx_int_134, __pyx_int_96, __pyx_int_67, __pyx_int_95); if (unlikely(!__pyx_tuple__236)) __PYX_ERR(0, 1356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__236);
  __Pyx_GIVEREF(__pyx_tuple__236);
+1357:             "ArmorStand": (0x22, 0xff, 0x22, 0x5f),
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ArmorStand, __pyx_tuple__237) < 0) __PYX_ERR(0, 1353, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_colorMap = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
/* … */
  __pyx_tuple__237 = PyTuple_Pack(4, __pyx_int_34, __pyx_int_255, __pyx_int_34, __pyx_int_95); if (unlikely(!__pyx_tuple__237)) __PYX_ERR(0, 1357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__237);
  __Pyx_GIVEREF(__pyx_tuple__237);
 1358:         }
+1359:         pos_append = entityPositions.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_entityPositions, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_pos_append = __pyx_t_1;
  __pyx_t_1 = 0;
+1360:         color_append = entityColors.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_entityColors, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_color_append = __pyx_t_1;
  __pyx_t_1 = 0;
+1361:         pos_func = pymclevel.Entity.pos
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Entity); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_pos_func = __pyx_t_1;
  __pyx_t_1 = 0;
+1362:         for i, ent in enumerate(chunk.Entities):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_Entities); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1362, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1362, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1362, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1362, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1362, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1362, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_ent);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_ent, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
/* … */
    __pyx_L4_continue:;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1363:             if i % 10 == 0:
    __pyx_t_2 = __Pyx_PyInt_RemainderObjC(__pyx_cur_scope->__pyx_v_i, __pyx_int_10, 10, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_2, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1363, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_7) {
/* … */
    }
+1364:                 yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
      __Pyx_XGIVEREF(__pyx_t_3);
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
      __pyx_cur_scope->__pyx_t_3 = __pyx_t_5;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L7_resume_from_yield:;
      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = 0;
      __Pyx_XGOTREF(__pyx_t_3);
      __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
      __pyx_t_5 = __pyx_cur_scope->__pyx_t_3;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1364, __pyx_L1_error)
 1365:             # Let get the color from the versionned data, and use the 'old' way as fallback
+1366:             color = MCEDIT_DEFS.get(MCEDIT_IDS.get(ent["id"].value), {}).get("mapcolor")
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MCEDIT_DEFS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MCEDIT_IDS); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_get); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ent, __pyx_n_s_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_10, function);
      }
    }
    if (!__pyx_t_9) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1366, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1366, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_9); __pyx_t_9 = NULL;
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_11);
      __pyx_t_11 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1366, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
        __pyx_t_13 = 1;
      }
    }
    __pyx_t_11 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    if (__pyx_t_12) {
      __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __pyx_t_12 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_13, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_10);
    PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_13, __pyx_t_10);
    __pyx_t_2 = 0;
    __pyx_t_10 = 0;
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_get); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__238, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_color);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_color, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
/* … */
  __pyx_tuple__238 = PyTuple_Pack(1, __pyx_n_s_mapcolor); if (unlikely(!__pyx_tuple__238)) __PYX_ERR(0, 1366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__238);
  __Pyx_GIVEREF(__pyx_tuple__238);
+1367:             if color is None:
    __pyx_t_7 = (__pyx_cur_scope->__pyx_v_color == Py_None);
    __pyx_t_14 = (__pyx_t_7 != 0);
    if (__pyx_t_14) {
/* … */
    }
+1368:                 color = colorMap.get(ent["id"].value)
      __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ent, __pyx_n_s_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1368, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_value); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1368, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_cur_scope->__pyx_v_colorMap, __pyx_t_8, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1368, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_color);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_color, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;
 1369: 
+1370:             if color is None:
    __pyx_t_14 = (__pyx_cur_scope->__pyx_v_color == Py_None);
    __pyx_t_7 = (__pyx_t_14 != 0);
    if (__pyx_t_7) {
/* … */
    }
+1371:                 continue
      goto __pyx_L4_continue;
+1372:             pos = pos_func(ent)
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pos_func);
    __pyx_t_8 = __pyx_cur_scope->__pyx_v_pos_func; __pyx_t_11 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_11)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_11) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_cur_scope->__pyx_v_ent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1372, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1372, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ent);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ent);
      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_cur_scope->__pyx_v_ent);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1372, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_pos);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_pos, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
+1373:             noRenderDelta = MCEDIT_DEFS.get('noRenderDelta', ("Painting", "ItemFrame"))
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_MCEDIT_DEFS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_get); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__239 = PyTuple_Pack(2, __pyx_n_s_Painting, __pyx_n_s_ItemFrame); if (unlikely(!__pyx_tuple__239)) __PYX_ERR(0, 1373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__239);
  __Pyx_GIVEREF(__pyx_tuple__239);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__240, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_noRenderDelta);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_noRenderDelta, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
  __pyx_tuple__240 = PyTuple_Pack(2, __pyx_n_s_noRenderDelta, __pyx_tuple__239); if (unlikely(!__pyx_tuple__240)) __PYX_ERR(0, 1373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__240);
  __Pyx_GIVEREF(__pyx_tuple__240);
+1374:             if ent["id"].value not in noRenderDelta:
    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ent, __pyx_n_s_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_value); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_t_8, __pyx_cur_scope->__pyx_v_noRenderDelta, Py_NE)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1374, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_14 = (__pyx_t_7 != 0);
    if (__pyx_t_14) {
/* … */
    }
+1375:                 pos[1] += 0.5
      __pyx_t_13 = 1;
      __pyx_t_8 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_pos, __pyx_t_13, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1375, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = __Pyx_PyFloat_AddObjC(__pyx_t_8, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1375, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(__Pyx_SetItemInt(__pyx_cur_scope->__pyx_v_pos, __pyx_t_13, __pyx_t_6, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(0, 1375, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1376:             pos_append(pos)
    __pyx_t_15 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_entityPositions, __pyx_cur_scope->__pyx_v_pos); if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 1376, __pyx_L1_error)
+1377:             color_append(color)
    __pyx_t_15 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_entityColors, __pyx_cur_scope->__pyx_v_color); if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 1377, __pyx_L1_error)
 1378: 
+1379:         entities = self._computeVertices(entityPositions,
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_computeVertices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
/* … */
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_entityPositions);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_entityPositions);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_cur_scope->__pyx_v_entityPositions);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __pyx_t_6 = 0;
/* … */
  __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_cur_scope->__pyx_v_entities = __pyx_t_10;
  __pyx_t_10 = 0;
+1380:                                          numpy.array(entityColors, dtype='uint8')[:, numpy.newaxis, numpy.newaxis],
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_entityColors);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_entityColors);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_entityColors);
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0) __PYX_ERR(0, 1380, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_slice__241);
  __Pyx_GIVEREF(__pyx_slice__241);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_slice__241);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_6);
  __pyx_t_3 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_GetItem(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__241 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__241)) __PYX_ERR(0, 1380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__241);
  __Pyx_GIVEREF(__pyx_slice__241);
+1381:                                          offset=True, chunkPosition=chunk.chunkPosition)
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, Py_True) < 0) __PYX_ERR(0, 1381, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_chunkPosition, __pyx_t_10) < 0) __PYX_ERR(0, 1381, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+1382:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L11_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1382, __pyx_L1_error)
+1383:         self.vertexArrays = [entities]
  __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_entities);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_entities);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_cur_scope->__pyx_v_entities);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_t_10) < 0) __PYX_ERR(0, 1383, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 1384: 
 1385: 
+1386: class TileTicksRenderer(EntityRendererGeneric):
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_EntityRendererGeneric); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_TileTicksRenderer, __pyx_n_s_TileTicksRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_TileTicksRenderer, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TileTicksRenderer, __pyx_t_12) < 0) __PYX_ERR(0, 1386, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1387:     layer = Layer.TileTicks
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_TileTicks); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_layer, __pyx_t_12) < 0) __PYX_ERR(0, 1387, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 1388: 
+1389:     def makeChunkVertices(self, chunk):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17TileTicksRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17TileTicksRenderer_1makeChunkVertices = {"makeChunkVertices", (PyCFunction)__pyx_pw_9_renderer_17TileTicksRenderer_1makeChunkVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17TileTicksRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunk = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunk,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, 1); __PYX_ERR(0, 1389, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeChunkVertices") < 0)) __PYX_ERR(0, 1389, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunk = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1389, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.TileTicksRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17TileTicksRenderer_makeChunkVertices(__pyx_self, __pyx_v_self, __pyx_v_chunk);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17TileTicksRenderer_makeChunkVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunk) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_17_makeChunkVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_17_makeChunkVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_17_makeChunkVertices(__pyx_ptype_9_renderer___pyx_scope_struct_17_makeChunkVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_chunk = __pyx_v_chunk;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_17TileTicksRenderer_2generator10, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeChunkVertices, __pyx_n_s_TileTicksRenderer_makeChunkVerti, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1389, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.TileTicksRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_17TileTicksRenderer_2generator10(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1389, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__691 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_chunk, __pyx_n_s_i, __pyx_n_s_tick, __pyx_n_s_j); if (unlikely(!__pyx_tuple__691)) __PYX_ERR(0, 1389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__691);
  __Pyx_GIVEREF(__pyx_tuple__691);
/* … */
  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17TileTicksRenderer_1makeChunkVertices, 0, __pyx_n_s_TileTicksRenderer_makeChunkVerti, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__692)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeChunkVertices, __pyx_t_12) < 0) __PYX_ERR(0, 1389, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_codeobj__692 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__691, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeChunkVertices, 1389, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__692)) __PYX_ERR(0, 1389, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_17_makeChunkVertices {
  PyObject_HEAD
  PyObject *__pyx_v_chunk;
  PyObject *__pyx_v_i;
  PyObject *__pyx_v_j;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_tick;
};

+1390:         if hasattr(chunk, "TileTicks"):
  __pyx_t_1 = PyObject_HasAttr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_TileTicks); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1390, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
  }
+1391:             self.vertexArrays.append(
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
/* … */
    __pyx_t_15 = __Pyx_PyObject_Append(__pyx_t_3, __pyx_t_8); if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 1391, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1392:                 self._computeVertices([[tick[j].value for j in "xyz"] for i, tick in enumerate(chunk.TileTicks)],
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_computeVertices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __pyx_t_6 = __pyx_int_0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_TileTicks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
      __pyx_t_8 = __pyx_t_7; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1392, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_8))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1392, __pyx_L1_error)
          #else
          __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1392, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1392, __pyx_L1_error)
          #else
          __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1392, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          #endif
        }
      } else {
        __pyx_t_7 = __pyx_t_10(__pyx_t_8);
        if (unlikely(!__pyx_t_7)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 1392, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_tick);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_tick, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6);
      __pyx_t_6 = __pyx_t_7;
      __pyx_t_7 = 0;
      __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_11 = PyObject_GetIter(__pyx_n_s_xyz); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1392, __pyx_L1_error)
      for (;;) {
        {
          __pyx_t_13 = __pyx_t_12(__pyx_t_11);
          if (unlikely(!__pyx_t_13)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(0, 1392, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_13);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_j);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_j, __pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_13);
        __pyx_t_13 = 0;
        __pyx_t_13 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_tick, __pyx_cur_scope->__pyx_v_j); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_value); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_14))) __PYX_ERR(0, 1392, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 1392, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
    __Pyx_INCREF(__pyx_tuple__242);
    __Pyx_GIVEREF(__pyx_tuple__242);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_tuple__242);
    __pyx_t_5 = 0;
/* … */
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1393:                                       (0xff, 0xff, 0xff, 0x44),
  __pyx_tuple__242 = PyTuple_Pack(4, __pyx_int_255, __pyx_int_255, __pyx_int_255, __pyx_int_68); if (unlikely(!__pyx_tuple__242)) __PYX_ERR(0, 1393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__242);
  __Pyx_GIVEREF(__pyx_tuple__242);
+1394:                                       chunkPosition=chunk.chunkPosition))
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_chunk, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_chunkPosition, __pyx_t_8) < 0) __PYX_ERR(0, 1394, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1395:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L9_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1395, __pyx_L1_error)
 1396: 
 1397: 
+1398: class TerrainPopulatedRenderer(EntityRendererGeneric):
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EntityRendererGeneric); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_TerrainPopulatedRenderer, __pyx_n_s_TerrainPopulatedRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_TerrainPopulatedRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TerrainPopulatedRenderer, __pyx_t_5) < 0) __PYX_ERR(0, 1398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1399:     layer = Layer.TerrainPopulated
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_TerrainPopulated); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_layer, __pyx_t_12) < 0) __PYX_ERR(0, 1399, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+1400:     vertexTemplate = numpy.zeros((6, 4, 6), 'float32')
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__693 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__693)) __PYX_ERR(0, 1400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__693);
  __Pyx_GIVEREF(__pyx_tuple__693);
  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__694, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_vertexTemplate, __pyx_t_12) < 0) __PYX_ERR(0, 1400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_tuple__694 = PyTuple_Pack(2, __pyx_tuple__693, __pyx_n_s_float32); if (unlikely(!__pyx_tuple__694)) __PYX_ERR(0, 1400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__694);
  __Pyx_GIVEREF(__pyx_tuple__694);
+1401:     vertexTemplate[_XYZ] = faceVertexTemplates[_XYZ]
  if (unlikely(__pyx_v_9_renderer_faceVertexTemplates == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(0, 1401, __pyx_L1_error)
  }
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyObject_GetItem(__pyx_v_9_renderer_faceVertexTemplates, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_vertexTemplate);
  if (unlikely(!__pyx_t_12)) {
    PyErr_Clear();
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertexTemplate);
  }
  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_5, __pyx_t_11) < 0)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+1402:     vertexTemplate[_XYZ] *= (16, 256, 16)
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_vertexTemplate);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertexTemplate);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = PyObject_GetItem(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_t_12, __pyx_tuple__695); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_vertexTemplate);
  if (unlikely(!__pyx_t_12)) {
    PyErr_Clear();
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertexTemplate);
  }
  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_11, __pyx_t_5) < 0)) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
  __pyx_tuple__695 = PyTuple_Pack(3, __pyx_int_16, __pyx_int_256, __pyx_int_16); if (unlikely(!__pyx_tuple__695)) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__695);
  __Pyx_GIVEREF(__pyx_tuple__695);
+1403:     color = (255, 200, 155)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_color, __pyx_tuple__696) < 0) __PYX_ERR(0, 1403, __pyx_L1_error)
/* … */
  __pyx_tuple__696 = PyTuple_Pack(3, __pyx_int_255, __pyx_int_200, __pyx_int_155); if (unlikely(!__pyx_tuple__696)) __PYX_ERR(0, 1403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__696);
  __Pyx_GIVEREF(__pyx_tuple__696);
+1404:     vertexTemplate.view('uint8')[_RGBA] = color + (72,)
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_color);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_color);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyNumber_Add(__pyx_t_11, __pyx_tuple__697); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_vertexTemplate);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertexTemplate);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_view); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
  __pyx_tuple__697 = PyTuple_Pack(1, __pyx_int_72); if (unlikely(!__pyx_tuple__697)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__697);
  __Pyx_GIVEREF(__pyx_tuple__697);
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__698, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGBA); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (unlikely(PyObject_SetItem(__pyx_t_11, __pyx_t_12, __pyx_t_5) < 0)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_tuple__698 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__698)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__698);
  __Pyx_GIVEREF(__pyx_tuple__698);
 1405: 
+1406:     def drawFaceVertices(self, buf):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_24TerrainPopulatedRenderer_1drawFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_24TerrainPopulatedRenderer_1drawFaceVertices = {"drawFaceVertices", (PyCFunction)__pyx_pw_9_renderer_24TerrainPopulatedRenderer_1drawFaceVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_24TerrainPopulatedRenderer_1drawFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_buf,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buf)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("drawFaceVertices", 1, 2, 2, 1); __PYX_ERR(0, 1406, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "drawFaceVertices") < 0)) __PYX_ERR(0, 1406, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_buf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("drawFaceVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1406, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.TerrainPopulatedRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_24TerrainPopulatedRenderer_drawFaceVertices(__pyx_self, __pyx_v_self, __pyx_v_buf);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_24TerrainPopulatedRenderer_drawFaceVertices(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  int __pyx_v_stride;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("_renderer.TerrainPopulatedRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_24TerrainPopulatedRenderer_4generator11(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__699 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_stride); if (unlikely(!__pyx_tuple__699)) __PYX_ERR(0, 1406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__699);
  __Pyx_GIVEREF(__pyx_tuple__699);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_24TerrainPopulatedRenderer_1drawFaceVertices, 0, __pyx_n_s_TerrainPopulatedRenderer_drawFac, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__700)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawFaceVertices, __pyx_t_5) < 0) __PYX_ERR(0, 1406, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_codeobj__700 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__699, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_drawFaceVertices, 1406, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__700)) __PYX_ERR(0, 1406, __pyx_L1_error)
+1407:         if not len(buf):
  __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1407, __pyx_L1_error)
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {
/* … */
  }
+1408:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
+1409:         stride = elementByteLength
  __pyx_v_stride = __pyx_v_9_renderer_elementByteLength;
 1410: 
+1411:         GL.glVertexPointer(3, GL.GL_FLOAT, stride, (buf.ravel()))
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glVertexPointer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_9) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1411, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1411, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_9 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_1, __pyx_t_7);
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1412:         GL.glTexCoordPointer(2, GL.GL_FLOAT, stride, (buf.ravel()[3:]))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glTexCoordPointer); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1412, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1412, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_4, 3, 0, NULL, NULL, &__pyx_slice__243, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_int_2);
  __Pyx_GIVEREF(__pyx_int_2);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_int_2);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_1, __pyx_t_6);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__243 = PySlice_New(__pyx_int_3, Py_None, Py_None); if (unlikely(!__pyx_slice__243)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__243);
  __Pyx_GIVEREF(__pyx_slice__243);
+1413:         GL.glColorPointer(4, GL.GL_UNSIGNED_BYTE, stride, (buf.view(dtype=numpy.uint8).ravel()[20:]))
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glColorPointer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_GL_UNSIGNED_BYTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_view); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_uint8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_11) < 0) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_11) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1413, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1413, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_5, 20, 0, NULL, NULL, &__pyx_slice__244, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_11 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_INCREF(__pyx_int_4);
  __Pyx_GIVEREF(__pyx_int_4);
  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_int_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_1, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_1, __pyx_t_4);
  __pyx_t_6 = 0;
  __pyx_t_9 = 0;
  __pyx_t_4 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__244 = PySlice_New(__pyx_int_20, Py_None, Py_None); if (unlikely(!__pyx_slice__244)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__244);
  __Pyx_GIVEREF(__pyx_slice__244);
 1414: 
+1415:         GL.glDepthMask(False)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glDepthMask); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__245, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__245 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__245)) __PYX_ERR(0, 1415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__245);
  __Pyx_GIVEREF(__pyx_tuple__245);
 1416: 
+1417:         GL.glDisable(GL.GL_CULL_FACE)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_CULL_FACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1418: 
+1419:         with gl.glEnable(GL.GL_DEPTH_TEST):
  /*with:*/ {
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_11)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    if (!__pyx_t_11) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1419, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1419, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __pyx_t_11 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1419, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1419, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1419, __pyx_L4_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1419, __pyx_L4_error)
    }
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /*try:*/ {
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        goto __pyx_L15_try_end;
        __pyx_L8_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("_renderer.TerrainPopulatedRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(0, 1419, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1419, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1419, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_16);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_16);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(0, 1419, __pyx_L10_except_error)
          __pyx_t_17 = ((!(__pyx_t_2 != 0)) != 0);
          if (__pyx_t_17) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_8);
            __Pyx_XGIVEREF(__pyx_t_6);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_8, __pyx_t_6);
            __pyx_t_3 = 0; __pyx_t_8 = 0; __pyx_t_6 = 0; 
            __PYX_ERR(0, 1419, __pyx_L10_except_error)
          }
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        __pyx_L15_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_12) {
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__246, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1419, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L19;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    goto __pyx_L1_error;
    __pyx_L19:;
  }
/* … */
  __pyx_tuple__246 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__246)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__246);
  __Pyx_GIVEREF(__pyx_tuple__246);
+1420:             GL.glDrawArrays(GL.GL_QUADS, 0, len(buf) * 4)
          __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1420, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1420, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1420, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1420, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1420, __pyx_L8_error)
          __pyx_t_9 = PyInt_FromSsize_t((__pyx_t_1 * 4)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1420, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_11 = NULL;
          __pyx_t_1 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_11)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_11);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_1 = 1;
            }
          }
          __pyx_t_6 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1420, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_6);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_11); __pyx_t_11 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_4);
          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_1, __pyx_t_4);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_9);
          PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_1, __pyx_t_9);
          __pyx_t_4 = 0;
          __pyx_t_9 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1421: 
+1422:         GL.glEnable(GL.GL_CULL_FACE)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_CULL_FACE); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1422, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_GOTREF(__pyx_t_6);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_9);
    __pyx_t_9 = 0;
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 1423: 
+1424:         GL.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glPolygonMode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_FRONT_AND_BACK); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_LINE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_11 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_8);
  __pyx_t_9 = 0;
  __pyx_t_8 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 1425: 
+1426:         GL.glLineWidth(1.0)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glLineWidth); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__247, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__247 = PyTuple_Pack(1, __pyx_float_1_0); if (unlikely(!__pyx_tuple__247)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__247);
  __Pyx_GIVEREF(__pyx_tuple__247);
+1427:         GL.glDrawArrays(GL.GL_QUADS, 0, len(buf) * 4)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __pyx_t_4 = PyInt_FromSsize_t((__pyx_t_1 * 4)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_9 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_3 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_9) {
    __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __pyx_t_9 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_1, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_1, __pyx_t_4);
  __pyx_t_8 = 0;
  __pyx_t_4 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1428:         GL.glLineWidth(2.0)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glLineWidth); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__248, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__248 = PyTuple_Pack(1, __pyx_float_2_0); if (unlikely(!__pyx_tuple__248)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__248);
  __Pyx_GIVEREF(__pyx_tuple__248);
+1429:         with gl.glEnable(GL.GL_DEPTH_TEST):
  /*with:*/ {
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_11)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_11) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1429, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __pyx_t_11 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_6, __pyx_n_s_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1429, __pyx_L20_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1429, __pyx_L20_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1429, __pyx_L20_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    /*try:*/ {
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        goto __pyx_L31_try_end;
        __pyx_L24_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("_renderer.TerrainPopulatedRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(0, 1429, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_3 = PyTuple_Pack(3, __pyx_t_6, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1429, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_3, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1429, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_16);
          __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_16);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          if (__pyx_t_17 < 0) __PYX_ERR(0, 1429, __pyx_L26_except_error)
          __pyx_t_2 = ((!(__pyx_t_17 != 0)) != 0);
          if (__pyx_t_2) {
            __Pyx_GIVEREF(__pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_8);
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_8, __pyx_t_9);
            __pyx_t_6 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; 
            __PYX_ERR(0, 1429, __pyx_L26_except_error)
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          goto __pyx_L25_exception_handled;
        }
        __pyx_L26_except_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_13);
        goto __pyx_L1_error;
        __pyx_L25_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_13);
        __pyx_L31_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_12) {
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__249, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1429, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        }
        goto __pyx_L23;
      }
      __pyx_L23:;
    }
    goto __pyx_L35;
    __pyx_L20_error:;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    goto __pyx_L1_error;
    __pyx_L35:;
  }
/* … */
  __pyx_tuple__249 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__249)) __PYX_ERR(0, 1429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__249);
  __Pyx_GIVEREF(__pyx_tuple__249);
+1430:             GL.glDrawArrays(GL.GL_QUADS, 0, len(buf) * 4)
          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1430, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1430, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1430, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1430, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1430, __pyx_L24_error)
          __pyx_t_3 = PyInt_FromSsize_t((__pyx_t_1 * 4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1430, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_11 = NULL;
          __pyx_t_1 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_11)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_11);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_1 = 1;
            }
          }
          __pyx_t_9 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1430, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_9);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_11); __pyx_t_11 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_4);
          PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_1, __pyx_t_4);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_1, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_3);
          PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_1, __pyx_t_3);
          __pyx_t_4 = 0;
          __pyx_t_3 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1430, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1431:         GL.glLineWidth(1.0)
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glLineWidth); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__250, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
  __pyx_tuple__250 = PyTuple_Pack(1, __pyx_float_1_0); if (unlikely(!__pyx_tuple__250)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__250);
  __Pyx_GIVEREF(__pyx_tuple__250);
 1432: 
+1433:         GL.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glPolygonMode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_FRONT_AND_BACK); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_FILL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_11 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+1434:         GL.glDepthMask(True)
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glDepthMask); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__251, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
  __pyx_tuple__251 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__251)) __PYX_ERR(0, 1434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__251);
  __Pyx_GIVEREF(__pyx_tuple__251);
 1435: 
+1436:     def makeChunkVertices(self, chunk):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_24TerrainPopulatedRenderer_3makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_24TerrainPopulatedRenderer_3makeChunkVertices = {"makeChunkVertices", (PyCFunction)__pyx_pw_9_renderer_24TerrainPopulatedRenderer_3makeChunkVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_24TerrainPopulatedRenderer_3makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunk = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunk,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, 1); __PYX_ERR(0, 1436, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeChunkVertices") < 0)) __PYX_ERR(0, 1436, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunk = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1436, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.TerrainPopulatedRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_24TerrainPopulatedRenderer_2makeChunkVertices(__pyx_self, __pyx_v_self, __pyx_v_chunk);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_24TerrainPopulatedRenderer_2makeChunkVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunk) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_18_makeChunkVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_18_makeChunkVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_18_makeChunkVertices(__pyx_ptype_9_renderer___pyx_scope_struct_18_makeChunkVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_chunk = __pyx_v_chunk;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_24TerrainPopulatedRenderer_4generator11, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeChunkVertices, __pyx_n_s_TerrainPopulatedRenderer_makeChu, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1436, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.TerrainPopulatedRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
static PyObject *__pyx_gb_9_renderer_24TerrainPopulatedRenderer_4generator11(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1436, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_19ChunkBorderRenderer_2generator12(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__701 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_chunk, __pyx_n_s_neighbors, __pyx_n_s_getpop, __pyx_n_s_getpop, __pyx_n_s_pop, __pyx_n_s_visibleFaces, __pyx_n_s_verts); if (unlikely(!__pyx_tuple__701)) __PYX_ERR(0, 1436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__701);
  __Pyx_GIVEREF(__pyx_tuple__701);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_24TerrainPopulatedRenderer_3makeChunkVertices, 0, __pyx_n_s_TerrainPopulatedRenderer_makeChu, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__702)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeChunkVertices, __pyx_t_5) < 0) __PYX_ERR(0, 1436, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_codeobj__702 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__701, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeChunkVertices, 1436, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__702)) __PYX_ERR(0, 1436, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_18_makeChunkVertices {
  PyObject_HEAD
  PyObject *__pyx_v_chunk;
  PyObject *__pyx_v_getpop;
  PyObject *__pyx_v_neighbors;
  PyObject *__pyx_v_pop;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_verts;
  PyObject *__pyx_v_visibleFaces;
};

+1437:         neighbors = self.chunkCalculator.getNeighboringChunks(chunk)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkCalculator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getNeighboringChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_chunk); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_chunk);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_neighbors = __pyx_t_1;
  __pyx_t_1 = 0;
 1438: 
+1439:         def getpop(ch):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_1getpop(PyObject *__pyx_self, PyObject *__pyx_v_ch); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_1getpop = {"getpop", (PyCFunction)__pyx_pw_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_1getpop, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_1getpop(PyObject *__pyx_self, PyObject *__pyx_v_ch) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getpop (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_getpop(__pyx_self, ((PyObject *)__pyx_v_ch));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_getpop(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getpop", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.TerrainPopulatedRenderer.makeChunkVertices.getpop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__252 = PyTuple_Pack(1, __pyx_n_s_ch); if (unlikely(!__pyx_tuple__252)) __PYX_ERR(0, 1439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__252);
  __Pyx_GIVEREF(__pyx_tuple__252);
/* … */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_1getpop, 0, __pyx_n_s_TerrainPopulatedRenderer_makeChu_2, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__253)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_getpop = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_codeobj__253 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__252, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getpop, 1439, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__253)) __PYX_ERR(0, 1439, __pyx_L1_error)
+1440:             return getattr(ch, "TerrainPopulated", True)
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_ch, __pyx_n_s_TerrainPopulated, Py_True); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 1441: 
+1442:         pop = getpop(chunk)
  __pyx_t_1 = __pyx_pf_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_getpop(__pyx_cur_scope->__pyx_v_getpop, __pyx_cur_scope->__pyx_v_chunk); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_pop = __pyx_t_1;
  __pyx_t_1 = 0;
+1443:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1443, __pyx_L1_error)
+1444:         if pop:
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_pop); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1444, __pyx_L1_error)
  if (__pyx_t_5) {
/* … */
  }
+1445:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;
 1446: 
+1447:         visibleFaces = [
  __pyx_t_6 = PyList_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyList_SET_ITEM(__pyx_t_6, 2, Py_True);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyList_SET_ITEM(__pyx_t_6, 3, Py_True);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_6, 4, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_6, 5, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_visibleFaces = __pyx_t_6;
  __pyx_t_6 = 0;
+1448:             getpop(neighbors[pymclevel.faces.FaceXIncreasing]),
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_neighbors, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __pyx_pf_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_getpop(__pyx_cur_scope->__pyx_v_getpop, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1449:             getpop(neighbors[pymclevel.faces.FaceXDecreasing]),
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_neighbors, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_pf_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_getpop(__pyx_cur_scope->__pyx_v_getpop, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 1450:             True,
 1451:             True,
+1452:             getpop(neighbors[pymclevel.faces.FaceZIncreasing]),
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_neighbors, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __pyx_pf_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_getpop(__pyx_cur_scope->__pyx_v_getpop, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1453:             getpop(neighbors[pymclevel.faces.FaceZDecreasing]),
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_neighbors, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __pyx_pf_9_renderer_24TerrainPopulatedRenderer_17makeChunkVertices_getpop(__pyx_cur_scope->__pyx_v_getpop, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 1454:         ]
 1455: 
+1456:         visibleFaces = numpy.array(visibleFaces, dtype='bool')
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_visibleFaces);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_visibleFaces);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_visibleFaces);
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_n_s_bool) < 0) __PYX_ERR(0, 1456, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_visibleFaces);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_visibleFaces, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
+1457:         verts = self.vertexTemplate[visibleFaces]
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_visibleFaces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_verts = __pyx_t_4;
  __pyx_t_4 = 0;
+1458:         self.vertexArrays.append(verts)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyObject_Append(__pyx_t_4, __pyx_cur_scope->__pyx_v_verts); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1458, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 1459: 
+1460:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L6_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1460, __pyx_L1_error)
 1461: 
 1462: 
+1463: class ChunkBorderRenderer(EntityRendererGeneric):
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_EntityRendererGeneric); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_ChunkBorderRenderer, __pyx_n_s_ChunkBorderRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_ChunkBorderRenderer, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ChunkBorderRenderer, __pyx_t_11) < 0) __PYX_ERR(0, 1463, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1464:     layer = Layer.ChunkBorder
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_ChunkBorder); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_layer, __pyx_t_5) < 0) __PYX_ERR(0, 1464, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1465:     color = (0, 210, 225)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_color, __pyx_tuple__703) < 0) __PYX_ERR(0, 1465, __pyx_L1_error)
/* … */
  __pyx_tuple__703 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_210, __pyx_int_225); if (unlikely(!__pyx_tuple__703)) __PYX_ERR(0, 1465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__703);
  __Pyx_GIVEREF(__pyx_tuple__703);
+1466:     vertexTemplate = numpy.zeros((6, 4, 6), 'float32')
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
  __pyx_tuple__704 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__704)) __PYX_ERR(0, 1466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__704);
  __Pyx_GIVEREF(__pyx_tuple__704);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__705, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_vertexTemplate, __pyx_t_5) < 0) __PYX_ERR(0, 1466, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_tuple__705 = PyTuple_Pack(2, __pyx_tuple__704, __pyx_n_s_float32); if (unlikely(!__pyx_tuple__705)) __PYX_ERR(0, 1466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__705);
  __Pyx_GIVEREF(__pyx_tuple__705);
+1467:     vertexTemplate[_XYZ] = faceVertexTemplates[_XYZ]
  if (unlikely(__pyx_v_9_renderer_faceVertexTemplates == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(0, 1467, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = PyObject_GetItem(__pyx_v_9_renderer_faceVertexTemplates, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_vertexTemplate);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertexTemplate);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_t_11, __pyx_t_12) < 0)) __PYX_ERR(0, 1467, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+1468:     vertexTemplate[_XYZ] *= (16, 256, 16)
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_vertexTemplate);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertexTemplate);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetItem(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyNumber_InPlaceMultiply(__pyx_t_5, __pyx_tuple__706); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_vertexTemplate);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertexTemplate);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_t_12, __pyx_t_11) < 0)) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__706 = PyTuple_Pack(3, __pyx_int_16, __pyx_int_256, __pyx_int_16); if (unlikely(!__pyx_tuple__706)) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__706);
  __Pyx_GIVEREF(__pyx_tuple__706);
+1469:     vertexTemplate.view('uint8')[_RGBA] = color + (150,)
  __pyx_t_12 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_color);
  if (unlikely(!__pyx_t_12)) {
    PyErr_Clear();
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_color);
  }
  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyNumber_Add(__pyx_t_12, __pyx_tuple__707); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_vertexTemplate);
  if (unlikely(!__pyx_t_12)) {
    PyErr_Clear();
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertexTemplate);
  }
  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_view); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__707 = PyTuple_Pack(1, __pyx_int_150); if (unlikely(!__pyx_tuple__707)) __PYX_ERR(0, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__707);
  __Pyx_GIVEREF(__pyx_tuple__707);
  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__708, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGBA); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_5, __pyx_t_11) < 0)) __PYX_ERR(0, 1469, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_tuple__708 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__708)) __PYX_ERR(0, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__708);
  __Pyx_GIVEREF(__pyx_tuple__708);
 1470: 
+1471:     def makeChunkVertices(self, chunk):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_19ChunkBorderRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_19ChunkBorderRenderer_1makeChunkVertices = {"makeChunkVertices", (PyCFunction)__pyx_pw_9_renderer_19ChunkBorderRenderer_1makeChunkVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_19ChunkBorderRenderer_1makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_chunk = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunk,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, 1); __PYX_ERR(0, 1471, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeChunkVertices") < 0)) __PYX_ERR(0, 1471, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunk = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1471, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkBorderRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_19ChunkBorderRenderer_makeChunkVertices(__pyx_self, __pyx_v_self, __pyx_v_chunk);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_19ChunkBorderRenderer_makeChunkVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_chunk) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_19_makeChunkVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_19_makeChunkVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_19_makeChunkVertices(__pyx_ptype_9_renderer___pyx_scope_struct_19_makeChunkVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_chunk = __pyx_v_chunk;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunk);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_19ChunkBorderRenderer_2generator12, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeChunkVertices, __pyx_n_s_ChunkBorderRenderer_makeChunkVer, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1471, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.ChunkBorderRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_19ChunkBorderRenderer_2generator12(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1471, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__709 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_chunk, __pyx_n_s_visibleFaces, __pyx_n_s_verts); if (unlikely(!__pyx_tuple__709)) __PYX_ERR(0, 1471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__709);
  __Pyx_GIVEREF(__pyx_tuple__709);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_19ChunkBorderRenderer_1makeChunkVertices, 0, __pyx_n_s_ChunkBorderRenderer_makeChunkVer, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__710)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeChunkVertices, __pyx_t_11) < 0) __PYX_ERR(0, 1471, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_codeobj__710 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__709, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeChunkVertices, 1471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__710)) __PYX_ERR(0, 1471, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_19_makeChunkVertices {
  PyObject_HEAD
  PyObject *__pyx_v_chunk;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_verts;
  PyObject *__pyx_v_visibleFaces;
};

+1472:         visibleFaces = [
  __pyx_t_1 = PyList_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyList_SET_ITEM(__pyx_t_1, 0, Py_True);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyList_SET_ITEM(__pyx_t_1, 1, Py_True);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyList_SET_ITEM(__pyx_t_1, 2, Py_True);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyList_SET_ITEM(__pyx_t_1, 3, Py_True);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyList_SET_ITEM(__pyx_t_1, 4, Py_True);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  PyList_SET_ITEM(__pyx_t_1, 5, Py_True);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_visibleFaces = __pyx_t_1;
  __pyx_t_1 = 0;
 1473:             True,
 1474:             True,
 1475:             True,
 1476:             True,
 1477:             True,
 1478:             True,
 1479:         ]
+1480:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1480, __pyx_L1_error)
+1481:         visibleFaces = numpy.array(visibleFaces, dtype='bool')
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_visibleFaces);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_visibleFaces);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_visibleFaces);
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_n_s_bool) < 0) __PYX_ERR(0, 1481, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_visibleFaces);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_visibleFaces, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
+1482:         verts = self.vertexTemplate[visibleFaces]
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexTemplate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_visibleFaces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_verts = __pyx_t_3;
  __pyx_t_3 = 0;
+1483:         self.vertexArrays.append(verts)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_Append(__pyx_t_3, __pyx_cur_scope->__pyx_v_verts); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1483, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1484:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L5_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1484, __pyx_L1_error)
 1485: 
+1486:     def drawFaceVertices(self, buf):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_19ChunkBorderRenderer_4drawFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_19ChunkBorderRenderer_4drawFaceVertices = {"drawFaceVertices", (PyCFunction)__pyx_pw_9_renderer_19ChunkBorderRenderer_4drawFaceVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_19ChunkBorderRenderer_4drawFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_buf,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buf)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("drawFaceVertices", 1, 2, 2, 1); __PYX_ERR(0, 1486, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "drawFaceVertices") < 0)) __PYX_ERR(0, 1486, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_buf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("drawFaceVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1486, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ChunkBorderRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_19ChunkBorderRenderer_3drawFaceVertices(__pyx_self, __pyx_v_self, __pyx_v_buf);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_19ChunkBorderRenderer_3drawFaceVertices(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  int __pyx_v_stride;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("_renderer.ChunkBorderRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__711 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_stride); if (unlikely(!__pyx_tuple__711)) __PYX_ERR(0, 1486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__711);
  __Pyx_GIVEREF(__pyx_tuple__711);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_19ChunkBorderRenderer_4drawFaceVertices, 0, __pyx_n_s_ChunkBorderRenderer_drawFaceVert, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__712)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawFaceVertices, __pyx_t_11) < 0) __PYX_ERR(0, 1486, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_codeobj__712 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__711, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_drawFaceVertices, 1486, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__712)) __PYX_ERR(0, 1486, __pyx_L1_error)
+1487:         if not len(buf):
  __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1487, __pyx_L1_error)
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {
/* … */
  }
+1488:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
+1489:         stride = elementByteLength
  __pyx_v_stride = __pyx_v_9_renderer_elementByteLength;
 1490: 
+1491:         GL.glVertexPointer(3, GL.GL_FLOAT, stride, (buf.ravel()))
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glVertexPointer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_9) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1491, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1491, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_9 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_1, __pyx_t_7);
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1492:         GL.glTexCoordPointer(2, GL.GL_FLOAT, stride, (buf.ravel()[3:]))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glTexCoordPointer); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1492, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1492, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_4, 3, 0, NULL, NULL, &__pyx_slice__254, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_int_2);
  __Pyx_GIVEREF(__pyx_int_2);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_int_2);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_1, __pyx_t_6);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__254 = PySlice_New(__pyx_int_3, Py_None, Py_None); if (unlikely(!__pyx_slice__254)) __PYX_ERR(0, 1492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__254);
  __Pyx_GIVEREF(__pyx_slice__254);
+1493:         GL.glColorPointer(4, GL.GL_UNSIGNED_BYTE, stride, (buf.view(dtype=numpy.uint8).ravel()[20:]))
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glColorPointer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_GL_UNSIGNED_BYTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_stride); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_view); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_uint8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_11) < 0) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_11) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1493, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1493, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_5, 20, 0, NULL, NULL, &__pyx_slice__255, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_11 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_INCREF(__pyx_int_4);
  __Pyx_GIVEREF(__pyx_int_4);
  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_int_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_1, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_1, __pyx_t_4);
  __pyx_t_6 = 0;
  __pyx_t_9 = 0;
  __pyx_t_4 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__255 = PySlice_New(__pyx_int_20, Py_None, Py_None); if (unlikely(!__pyx_slice__255)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__255);
  __Pyx_GIVEREF(__pyx_slice__255);
 1494: 
+1495:         GL.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glPolygonMode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_FRONT_AND_BACK); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_LINE); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_t_9);
  __pyx_t_4 = 0;
  __pyx_t_9 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1496: 
+1497:         GL.glLineWidth(1)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glLineWidth); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__256, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__256 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__256)) __PYX_ERR(0, 1497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__256);
  __Pyx_GIVEREF(__pyx_tuple__256);
+1498:         with gl.glEnable(GL.GL_DEPTH_TEST):
  /*with:*/ {
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_11)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_11) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1498, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1498, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11); __pyx_t_11 = NULL;
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_9);
      __pyx_t_9 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1498, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1498, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_9) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1498, __pyx_L4_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    } else {
      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1498, __pyx_L4_error)
    }
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /*try:*/ {
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        goto __pyx_L15_try_end;
        __pyx_L8_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("_renderer.ChunkBorderRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 1498, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_6 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1498, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_6, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1498, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_16);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_16);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(0, 1498, __pyx_L10_except_error)
          __pyx_t_17 = ((!(__pyx_t_2 != 0)) != 0);
          if (__pyx_t_17) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_XGIVEREF(__pyx_t_8);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_8);
            __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_8 = 0; 
            __PYX_ERR(0, 1498, __pyx_L10_except_error)
          }
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
        __pyx_L15_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_12) {
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__257, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1498, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L19;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    goto __pyx_L1_error;
    __pyx_L19:;
  }
/* … */
  __pyx_tuple__257 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__257)) __PYX_ERR(0, 1498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__257);
  __Pyx_GIVEREF(__pyx_tuple__257);
+1499:             GL.glDrawArrays(GL.GL_QUADS, 0, len(buf) * 4)
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1499, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1499, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1499, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1499, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1499, __pyx_L8_error)
          __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_1 * 4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1499, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_11 = NULL;
          __pyx_t_1 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_11)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_11);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
              __pyx_t_1 = 1;
            }
          }
          __pyx_t_8 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1499, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_8);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __pyx_t_11 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_9);
          PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_t_9);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_1, __pyx_t_6);
          __pyx_t_9 = 0;
          __pyx_t_6 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1499, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1500:         GL.glLineWidth(2.0)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glLineWidth); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__258, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_tuple__258 = PyTuple_Pack(1, __pyx_float_2_0); if (unlikely(!__pyx_tuple__258)) __PYX_ERR(0, 1500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__258);
  __Pyx_GIVEREF(__pyx_tuple__258);
+1501:         with gl.glEnable(GL.GL_DEPTH_TEST):
  /*with:*/ {
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1501, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1501, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1501, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_8, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_8, __pyx_n_s_enter); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1501, __pyx_L20_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    if (__pyx_t_6) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1501, __pyx_L20_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1501, __pyx_L20_error)
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    /*try:*/ {
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        goto __pyx_L31_try_end;
        __pyx_L24_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("_renderer.ChunkBorderRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_11) < 0) __PYX_ERR(0, 1501, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_3 = PyTuple_Pack(3, __pyx_t_8, __pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1501, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_3, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1501, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_16);
          __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_16);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          if (__pyx_t_17 < 0) __PYX_ERR(0, 1501, __pyx_L26_except_error)
          __pyx_t_2 = ((!(__pyx_t_17 != 0)) != 0);
          if (__pyx_t_2) {
            __Pyx_GIVEREF(__pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_9, __pyx_t_11);
            __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_11 = 0; 
            __PYX_ERR(0, 1501, __pyx_L26_except_error)
          }
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          goto __pyx_L25_exception_handled;
        }
        __pyx_L26_except_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_13);
        goto __pyx_L1_error;
        __pyx_L25_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_13);
        __pyx_L31_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_12) {
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__259, NULL);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1501, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        }
        goto __pyx_L23;
      }
      __pyx_L23:;
    }
    goto __pyx_L35;
    __pyx_L20_error:;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    goto __pyx_L1_error;
    __pyx_L35:;
  }
/* … */
  __pyx_tuple__259 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__259)) __PYX_ERR(0, 1501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__259);
  __Pyx_GIVEREF(__pyx_tuple__259);
+1502:             GL.glDrawArrays(GL.GL_QUADS, 0, len(buf) * 4)
          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1502, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1502, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1502, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1502, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1502, __pyx_L24_error)
          __pyx_t_3 = PyInt_FromSsize_t((__pyx_t_1 * 4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1502, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_4 = NULL;
          __pyx_t_1 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_9, function);
              __pyx_t_1 = 1;
            }
          }
          __pyx_t_11 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1502, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_11);
          if (__pyx_t_4) {
            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4); __pyx_t_4 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_t_6);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_3);
          PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_1, __pyx_t_3);
          __pyx_t_6 = 0;
          __pyx_t_3 = 0;
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1502, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1503:         GL.glLineWidth(1.0)
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_glLineWidth); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__260, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
  __pyx_tuple__260 = PyTuple_Pack(1, __pyx_float_1_0); if (unlikely(!__pyx_tuple__260)) __PYX_ERR(0, 1503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__260);
  __Pyx_GIVEREF(__pyx_tuple__260);
 1504: 
+1505:         GL.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL)
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glPolygonMode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_GL_FRONT_AND_BACK); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_GL_FILL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_9) {
    __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9); __pyx_t_9 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_1, __pyx_t_6);
  __pyx_t_3 = 0;
  __pyx_t_6 = 0;
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 1506: 
 1507: 
+1508: class LowDetailBlockRenderer(BlockRenderer):
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_LowDetailBlockRenderer, __pyx_n_s_LowDetailBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_LowDetailBlockRenderer, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LowDetailBlockRenderer, __pyx_t_5) < 0) __PYX_ERR(0, 1508, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1509:     renderstate = ChunkCalculator.renderstateLowDetail
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_renderstateLowDetail); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_5) < 0) __PYX_ERR(0, 1509, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1510:     detailLevels = (1,)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_detailLevels, __pyx_tuple__713) < 0) __PYX_ERR(0, 1510, __pyx_L1_error)
/* … */
  __pyx_tuple__713 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__713)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__713);
  __Pyx_GIVEREF(__pyx_tuple__713);
 1511: 
+1512:     def drawFaceVertices(self, buf):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_22LowDetailBlockRenderer_1drawFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_22LowDetailBlockRenderer_1drawFaceVertices = {"drawFaceVertices", (PyCFunction)__pyx_pw_9_renderer_22LowDetailBlockRenderer_1drawFaceVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_22LowDetailBlockRenderer_1drawFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_buf,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buf)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("drawFaceVertices", 1, 2, 2, 1); __PYX_ERR(0, 1512, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "drawFaceVertices") < 0)) __PYX_ERR(0, 1512, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_buf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("drawFaceVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1512, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.LowDetailBlockRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_22LowDetailBlockRenderer_drawFaceVertices(__pyx_self, __pyx_v_self, __pyx_v_buf);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_22LowDetailBlockRenderer_drawFaceVertices(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  long __pyx_v_stride;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawFaceVertices", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("_renderer.LowDetailBlockRenderer.drawFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__714 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_stride); if (unlikely(!__pyx_tuple__714)) __PYX_ERR(0, 1512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__714);
  __Pyx_GIVEREF(__pyx_tuple__714);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_22LowDetailBlockRenderer_1drawFaceVertices, 0, __pyx_n_s_LowDetailBlockRenderer_drawFaceV, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__715)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawFaceVertices, __pyx_t_5) < 0) __PYX_ERR(0, 1512, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_codeobj__715 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__714, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_drawFaceVertices, 1512, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__715)) __PYX_ERR(0, 1512, __pyx_L1_error)
+1513:         if not len(buf):
  __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1513, __pyx_L1_error)
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (__pyx_t_2) {
/* … */
  }
+1514:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
+1515:         stride = 16
  __pyx_v_stride = 16;
 1516: 
+1517:         GL.glVertexPointer(3, GL.GL_FLOAT, stride, numpy.ravel(buf.ravel()))
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glVertexPointer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_v_stride); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ravel); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_ravel); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_10, function);
    }
  }
  if (__pyx_t_11) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1517, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  } else {
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1517, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_10)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
    }
  }
  if (!__pyx_t_10) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1517, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_11 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__pyx_t_9) {
    __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
  }
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_int_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_1, __pyx_t_7);
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1518:         GL.glColorPointer(4, GL.GL_UNSIGNED_BYTE, stride, (buf.view(dtype='uint8').ravel()[12:]))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glColorPointer); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_UNSIGNED_BYTE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_long(__pyx_v_stride); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_buf, __pyx_n_s_view); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0) __PYX_ERR(0, 1518, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ravel); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1518, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1518, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_t_4, 12, 0, NULL, NULL, &__pyx_slice__261, 1, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(4+__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_int_4);
  __Pyx_GIVEREF(__pyx_int_4);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_int_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_1, __pyx_t_9);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_9 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__261 = PySlice_New(__pyx_int_12, Py_None, Py_None); if (unlikely(!__pyx_slice__261)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__261);
  __Pyx_GIVEREF(__pyx_slice__261);
 1519: 
+1520:         GL.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY)
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_glDisableClientState); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_GL_TEXTURE_COORD_ARRAY); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_11) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1520, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11); __pyx_t_11 = NULL;
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_9);
    __pyx_t_9 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1521:         GL.glDrawArrays(GL.GL_QUADS, 0, len(buf) * 4)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_buf); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1521, __pyx_L1_error)
  __pyx_t_8 = PyInt_FromSsize_t((__pyx_t_1 * 4)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = NULL;
  __pyx_t_1 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_1 = 1;
    }
  }
  __pyx_t_7 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__pyx_t_11) {
    __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_11); __pyx_t_11 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_1, __pyx_t_9);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_1, __pyx_t_8);
  __pyx_t_9 = 0;
  __pyx_t_8 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1522:         GL.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glEnableClientState); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_TEXTURE_COORD_ARRAY); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1522, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1523: 
+1524:     def setAlpha(self, alpha):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_22LowDetailBlockRenderer_3setAlpha(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_22LowDetailBlockRenderer_3setAlpha = {"setAlpha", (PyCFunction)__pyx_pw_9_renderer_22LowDetailBlockRenderer_3setAlpha, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_22LowDetailBlockRenderer_3setAlpha(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_alpha = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setAlpha (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_alpha,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_alpha)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("setAlpha", 1, 2, 2, 1); __PYX_ERR(0, 1524, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setAlpha") < 0)) __PYX_ERR(0, 1524, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_alpha = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setAlpha", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1524, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.LowDetailBlockRenderer.setAlpha", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_22LowDetailBlockRenderer_2setAlpha(__pyx_self, __pyx_v_self, __pyx_v_alpha);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_22LowDetailBlockRenderer_2setAlpha(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_alpha) {
  PyObject *__pyx_v_va = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setAlpha", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.LowDetailBlockRenderer.setAlpha", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_va);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_22LowDetailBlockRenderer_6generator13(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__716 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_alpha, __pyx_n_s_va); if (unlikely(!__pyx_tuple__716)) __PYX_ERR(0, 1524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__716);
  __Pyx_GIVEREF(__pyx_tuple__716);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_22LowDetailBlockRenderer_3setAlpha, 0, __pyx_n_s_LowDetailBlockRenderer_setAlpha, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__717)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_setAlpha, __pyx_t_5) < 0) __PYX_ERR(0, 1524, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_codeobj__717 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__716, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_setAlpha, 1524, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__717)) __PYX_ERR(0, 1524, __pyx_L1_error)
+1525:         for va in self.vertexArrays:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1525, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1525, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1525, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1525, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1525, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1525, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1525, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_va, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1526:             va.view('uint8')[..., -1] = alpha
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_va, __pyx_n_s_view); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__262, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__262 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__262)) __PYX_ERR(0, 1526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__262);
  __Pyx_GIVEREF(__pyx_tuple__262);
    if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_tuple__263, __pyx_v_alpha) < 0)) __PYX_ERR(0, 1526, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_tuple__263 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__263)) __PYX_ERR(0, 1526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__263);
  __Pyx_GIVEREF(__pyx_tuple__263);
 1527: 
+1528:     def makeChunkVertices(self, ch):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_22LowDetailBlockRenderer_5makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_22LowDetailBlockRenderer_5makeChunkVertices = {"makeChunkVertices", (PyCFunction)__pyx_pw_9_renderer_22LowDetailBlockRenderer_5makeChunkVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_22LowDetailBlockRenderer_5makeChunkVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_ch = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_ch,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ch)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, 1); __PYX_ERR(0, 1528, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeChunkVertices") < 0)) __PYX_ERR(0, 1528, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_ch = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeChunkVertices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1528, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.LowDetailBlockRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_22LowDetailBlockRenderer_4makeChunkVertices(__pyx_self, __pyx_v_self, __pyx_v_ch);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_22LowDetailBlockRenderer_4makeChunkVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_ch) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_20_makeChunkVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeChunkVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_20_makeChunkVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_20_makeChunkVertices(__pyx_ptype_9_renderer___pyx_scope_struct_20_makeChunkVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_ch = __pyx_v_ch;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ch);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ch);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_22LowDetailBlockRenderer_6generator13, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeChunkVertices, __pyx_n_s_LowDetailBlockRenderer_makeChunk, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1528, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.LowDetailBlockRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_22LowDetailBlockRenderer_6generator13(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1528, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_20GenericBlockRenderer_2generator14(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__718 = PyTuple_Pack(31, __pyx_n_s_self, __pyx_n_s_ch, __pyx_n_s_step, __pyx_n_s_level, __pyx_n_s_vertexArrays, __pyx_n_s_blocks, __pyx_n_s_heightMap, __pyx_n_s_chunkWidth, __pyx_n_s_chunkLength, __pyx_n_s_chunkHeight, __pyx_n_s_blockIndices, __pyx_n_s_gridaxes, __pyx_n_s_h, __pyx_n_s_depths, __pyx_n_s_topBlocks, __pyx_n_s_nonAirBlocks, __pyx_n_s_overblocks, __pyx_n_s_e, __pyx_n_s_blockTypes, __pyx_n_s_flatcolors, __pyx_n_s_x, __pyx_n_s_z, __pyx_n_s_y, __pyx_n_s_vertexArray, __pyx_n_s_va0, __pyx_n_s_overmask, __pyx_n_s_heightfactor, __pyx_n_s_RGBA, __pyx_n_s_va1, __pyx_n_s_grassmask, __pyx_n_s_va2); if (unlikely(!__pyx_tuple__718)) __PYX_ERR(0, 1528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__718);
  __Pyx_GIVEREF(__pyx_tuple__718);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_22LowDetailBlockRenderer_5makeChunkVertices, 0, __pyx_n_s_LowDetailBlockRenderer_makeChunk, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__719)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeChunkVertices, __pyx_t_5) < 0) __PYX_ERR(0, 1528, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_codeobj__719 = (PyObject*)__Pyx_PyCode_New(2, 0, 31, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__718, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeChunkVertices, 1528, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__719)) __PYX_ERR(0, 1528, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_20_makeChunkVertices {
  PyObject_HEAD
  PyObject *__pyx_v__RGBA;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockTypes;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_ch;
  PyObject *__pyx_v_chunkHeight;
  PyObject *__pyx_v_chunkLength;
  PyObject *__pyx_v_chunkWidth;
  PyObject *__pyx_v_depths;
  PyObject *__pyx_v_e;
  PyObject *__pyx_v_flatcolors;
  PyObject *__pyx_v_grassmask;
  PyObject *__pyx_v_gridaxes;
  PyObject *__pyx_v_h;
  PyObject *__pyx_v_heightMap;
  PyObject *__pyx_v_heightfactor;
  PyObject *__pyx_v_level;
  PyObject *__pyx_v_nonAirBlocks;
  PyObject *__pyx_v_overblocks;
  PyObject *__pyx_v_overmask;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_step;
  PyObject *__pyx_v_topBlocks;
  PyObject *__pyx_v_va0;
  PyObject *__pyx_v_va1;
  PyObject *__pyx_v_va2;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_v_vertexArrays;
  PyObject *__pyx_v_x;
  PyObject *__pyx_v_y;
  PyObject *__pyx_v_z;
};

+1529:         step = 1
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  __pyx_cur_scope->__pyx_v_step = __pyx_int_1;
+1530:         level = ch.world
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_ch, __pyx_n_s_world); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_level = __pyx_t_1;
  __pyx_t_1 = 0;
+1531:         vertexArrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_vertexArrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1532:         blocks = ch.Blocks
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_ch, __pyx_n_s_Blocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_t_1;
  __pyx_t_1 = 0;
+1533:         heightMap = ch.HeightMap
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_ch, __pyx_n_s_HeightMap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_heightMap = __pyx_t_1;
  __pyx_t_1 = 0;
 1534: 
+1535:         heightMap = heightMap[::step, ::step]
  __pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PySlice_New(Py_None, Py_None, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_heightMap, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_heightMap);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_heightMap, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
+1536:         blocks = blocks[::step, ::step]
  __pyx_t_2 = PySlice_New(Py_None, Py_None, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PySlice_New(Py_None, Py_None, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
 1537: 
+1538:         if 0 in blocks.shape:
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blocks, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_int_0, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {
/* … */
  }
+1539:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;
 1540: 
+1541:         chunkWidth, chunkLength, chunkHeight = blocks.shape
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blocks, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
    PyObject* sequence = __pyx_t_3;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 1541, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
      __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
      __pyx_t_6 = PyList_GET_ITEM(sequence, 2); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_6);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    #endif
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
    index = 0; __pyx_t_1 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_6);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) __PYX_ERR(0, 1541, __pyx_L1_error)
    __pyx_t_8 = NULL;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L6_unpacking_done;
    __pyx_L5_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 1541, __pyx_L1_error)
    __pyx_L6_unpacking_done:;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_chunkWidth = __pyx_t_1;
  __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_chunkLength = __pyx_t_2;
  __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_chunkHeight = __pyx_t_6;
  __pyx_t_6 = 0;
+1542:         blockIndices = numpy.zeros((chunkWidth, chunkLength, chunkHeight), bool)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkWidth);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkWidth);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_chunkWidth);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkLength);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkLength);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_cur_scope->__pyx_v_chunkLength);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkHeight);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkHeight);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_cur_scope->__pyx_v_chunkHeight);
  __pyx_t_1 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_t_6);
  __Pyx_INCREF(((PyObject*)&PyBool_Type));
  __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, ((PyObject*)&PyBool_Type));
  __pyx_t_6 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_blockIndices = __pyx_t_3;
  __pyx_t_3 = 0;
 1543: 
+1544:         gridaxes = list(numpy.indices((chunkWidth, chunkLength)))
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_indices); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkWidth);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkWidth);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_chunkWidth);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkLength);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkLength);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_cur_scope->__pyx_v_chunkLength);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1544, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PySequence_List(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_7);
  __pyx_cur_scope->__pyx_v_gridaxes = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;
+1545:         h = numpy.swapaxes(heightMap - 1, 0, 1)[:chunkWidth, :chunkLength]
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_swapaxes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_cur_scope->__pyx_v_heightMap, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_t_3);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_9, __pyx_int_1);
  __pyx_t_3 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PySlice_New(Py_None, __pyx_cur_scope->__pyx_v_chunkWidth, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PySlice_New(Py_None, __pyx_cur_scope->__pyx_v_chunkLength, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_GetItem(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_h = __pyx_t_6;
  __pyx_t_6 = 0;
+1546:         numpy.clip(h, 0, chunkHeight - 1, out=h)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_clip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_SubtractObjC(__pyx_cur_scope->__pyx_v_chunkHeight, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_h);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_h);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_cur_scope->__pyx_v_h);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_out, __pyx_cur_scope->__pyx_v_h) < 0) __PYX_ERR(0, 1546, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 1547: 
+1548:         gridaxes = [gridaxes[0], gridaxes[1], h]
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_cur_scope->__pyx_v_gridaxes, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_cur_scope->__pyx_v_gridaxes, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_h);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_h);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_cur_scope->__pyx_v_h);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_gridaxes);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_gridaxes, ((PyObject*)__pyx_t_7));
  __Pyx_GIVEREF(__pyx_t_7);
  __pyx_t_7 = 0;
 1549: 
+1550:         depths = numpy.zeros((chunkWidth, chunkLength), dtype='uint16')
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkWidth);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkWidth);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_cur_scope->__pyx_v_chunkWidth);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_chunkLength);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_chunkLength);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_cur_scope->__pyx_v_chunkLength);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_n_s_uint16) < 0) __PYX_ERR(0, 1550, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_depths = __pyx_t_3;
  __pyx_t_3 = 0;
+1551:         depths[1:-1, 1:-1] = reduce(numpy.minimum, (h[1:-1, :-2], h[1:-1, 2:], h[:-2, 1:-1]), h[2:, 1:-1])
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_minimum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__264 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__264)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__264);
  __Pyx_GIVEREF(__pyx_slice__264);
  __pyx_slice__265 = PySlice_New(Py_None, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__265)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__265);
  __Pyx_GIVEREF(__pyx_slice__265);
  __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_h, __pyx_tuple__266); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_tuple__266 = PyTuple_Pack(2, __pyx_slice__264, __pyx_slice__265); if (unlikely(!__pyx_tuple__266)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__266);
  __Pyx_GIVEREF(__pyx_tuple__266);
  __pyx_slice__267 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__267)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__267);
  __Pyx_GIVEREF(__pyx_slice__267);
  __pyx_slice__268 = PySlice_New(__pyx_int_2, Py_None, Py_None); if (unlikely(!__pyx_slice__268)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__268);
  __Pyx_GIVEREF(__pyx_slice__268);
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_h, __pyx_tuple__269); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_tuple__269 = PyTuple_Pack(2, __pyx_slice__267, __pyx_slice__268); if (unlikely(!__pyx_tuple__269)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__269);
  __Pyx_GIVEREF(__pyx_tuple__269);
  __pyx_slice__270 = PySlice_New(Py_None, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__270)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__270);
  __Pyx_GIVEREF(__pyx_slice__270);
  __pyx_slice__271 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__271)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__271);
  __Pyx_GIVEREF(__pyx_slice__271);
  __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_h, __pyx_tuple__272); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_6);
  __pyx_t_3 = 0;
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_tuple__272 = PyTuple_Pack(2, __pyx_slice__270, __pyx_slice__271); if (unlikely(!__pyx_tuple__272)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__272);
  __Pyx_GIVEREF(__pyx_tuple__272);
  __pyx_slice__273 = PySlice_New(__pyx_int_2, Py_None, Py_None); if (unlikely(!__pyx_slice__273)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__273);
  __Pyx_GIVEREF(__pyx_slice__273);
  __pyx_slice__274 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__274)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__274);
  __Pyx_GIVEREF(__pyx_slice__274);
  __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_h, __pyx_tuple__275); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_6);
  __pyx_t_7 = 0;
  __pyx_t_2 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_reduce, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__275 = PyTuple_Pack(2, __pyx_slice__273, __pyx_slice__274); if (unlikely(!__pyx_tuple__275)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__275);
  __Pyx_GIVEREF(__pyx_tuple__275);
  __pyx_slice__276 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__276)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__276);
  __Pyx_GIVEREF(__pyx_slice__276);
  __pyx_slice__277 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__277)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__277);
  __Pyx_GIVEREF(__pyx_slice__277);
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_depths, __pyx_tuple__278, __pyx_t_6) < 0)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_tuple__278 = PyTuple_Pack(2, __pyx_slice__276, __pyx_slice__277); if (unlikely(!__pyx_tuple__278)) __PYX_ERR(0, 1551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__278);
  __Pyx_GIVEREF(__pyx_tuple__278);
+1552:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L7_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1552, __pyx_L1_error)
 1553: 
+1554:         try:
  {
    /*try:*/ {
/* … */
    }
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    goto __pyx_L15_try_end;
    __pyx_L8_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_XGIVEREF(__pyx_t_11);
    __Pyx_XGIVEREF(__pyx_t_12);
    __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
    goto __pyx_L1_error;
    __pyx_L15_try_end:;
  }
+1555:             topBlocks = blocks[gridaxes]
      __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_gridaxes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1555, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_cur_scope->__pyx_v_topBlocks = __pyx_t_6;
      __pyx_t_6 = 0;
+1556:             nonAirBlocks = (topBlocks != 0)
      __pyx_t_6 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_topBlocks, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1556, __pyx_L8_error)
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_cur_scope->__pyx_v_nonAirBlocks = __pyx_t_6;
      __pyx_t_6 = 0;
+1557:             blockIndices[gridaxes] = nonAirBlocks
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_gridaxes, __pyx_cur_scope->__pyx_v_nonAirBlocks) < 0)) __PYX_ERR(0, 1557, __pyx_L8_error)
+1558:             h += 1
      __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_h, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1558, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_h);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_h, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;
+1559:             numpy.clip(h, 0, chunkHeight - 1, out=h)
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1559, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_clip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1559, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyInt_SubtractObjC(__pyx_cur_scope->__pyx_v_chunkHeight, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1559, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1559, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_h);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_h);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_h);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1559, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_out, __pyx_cur_scope->__pyx_v_h) < 0) __PYX_ERR(0, 1559, __pyx_L8_error)
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1559, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+1560:             overblocks = blocks[gridaxes][nonAirBlocks].ravel()
      __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_gridaxes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1560, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = PyObject_GetItem(__pyx_t_6, __pyx_cur_scope->__pyx_v_nonAirBlocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1560, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1560, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (__pyx_t_2) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1560, __pyx_L8_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else {
        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1560, __pyx_L8_error)
      }
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_cur_scope->__pyx_v_overblocks = __pyx_t_7;
      __pyx_t_7 = 0;
 1561: 
+1562:         except ValueError, e:
    __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
    if (__pyx_t_13) {
      __Pyx_AddTraceback("_renderer.LowDetailBlockRenderer.makeChunkVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_2) < 0) __PYX_ERR(0, 1562, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_cur_scope->__pyx_v_e = __pyx_t_6;
+1563:             raise ValueError(str(e.args) + "Chunk shape: {0}".format(blockIndices.shape), sys.exc_info()[-1])
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Chunk_shape_0, __pyx_n_s_format); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_n_s_shape); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_15);
      __pyx_t_16 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
        __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_14);
        if (likely(__pyx_t_16)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
          __Pyx_INCREF(__pyx_t_16);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_14, function);
        }
      }
      if (!__pyx_t_16) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_17);
        __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL;
        __Pyx_GIVEREF(__pyx_t_15);
        PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_t_15);
        __pyx_t_15 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      }
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_17);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_17))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_17);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_17, function);
        }
      }
      if (__pyx_t_1) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else {
        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_17); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      __pyx_t_17 = __Pyx_GetItemInt(__pyx_t_3, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_17);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_14);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_14);
      __Pyx_GIVEREF(__pyx_t_17);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_17);
      __pyx_t_14 = 0;
      __pyx_t_17 = 0;
      __pyx_t_17 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1563, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_17);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_Raise(__pyx_t_17, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      __PYX_ERR(0, 1563, __pyx_L10_except_error)
    }
    goto __pyx_L10_except_error;
    __pyx_L10_except_error:;
 1564: 
+1565:         if nonAirBlocks.any():
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_nonAirBlocks, __pyx_n_s_any); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_7) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1565, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1565, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1565, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {
/* … */
  }
+1566:             blockTypes = blocks[blockIndices]
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_v_blockTypes = __pyx_t_2;
    __pyx_t_2 = 0;
 1567: 
+1568:             flatcolors = level.materials.flatColors[blockTypes, ch.Data[blockIndices] & 0xf][:, numpy.newaxis, :]
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_level, __pyx_n_s_materials); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_flatColors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_ch, __pyx_n_s_Data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = PyObject_GetItem(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyInt_AndObjC(__pyx_t_7, __pyx_int_15, 0xf, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockTypes);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockTypes);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_cur_scope->__pyx_v_blockTypes);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_GetItem(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__279 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__279)) __PYX_ERR(0, 1568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__279);
  __Pyx_GIVEREF(__pyx_slice__279);
    __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_slice__279);
    __Pyx_GIVEREF(__pyx_slice__279);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__279);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
    __Pyx_INCREF(__pyx_slice__280);
    __Pyx_GIVEREF(__pyx_slice__280);
    PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_slice__280);
    __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_GetItem(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_cur_scope->__pyx_v_flatcolors = __pyx_t_6;
    __pyx_t_6 = 0;
  __pyx_slice__280 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__280)) __PYX_ERR(0, 1568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__280);
  __Pyx_GIVEREF(__pyx_slice__280);
+1569:             x, z, y = blockIndices.nonzero()
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (__pyx_t_2) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1569, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1569, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1569, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_17 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_17 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_17);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_17 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_3 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_7)) goto __pyx_L19_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L19_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_2);
      index = 2; __pyx_t_17 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_17)) goto __pyx_L19_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_17);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_3), 3) < 0) __PYX_ERR(0, 1569, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L20_unpacking_done;
      __pyx_L19_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1569, __pyx_L1_error)
      __pyx_L20_unpacking_done:;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_cur_scope->__pyx_v_x = __pyx_t_7;
    __pyx_t_7 = 0;
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_v_z = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_17);
    __pyx_cur_scope->__pyx_v_y = __pyx_t_17;
    __pyx_t_17 = 0;
 1570: 
+1571:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L21_resume_from_yield:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1571, __pyx_L1_error)
+1572:             vertexArray = numpy.zeros((len(x), 4, 4), dtype='float32')
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_9 = PyObject_Length(__pyx_cur_scope->__pyx_v_x); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_4);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_int_4);
    __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 1572, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_cur_scope->__pyx_v_vertexArray = __pyx_t_7;
    __pyx_t_7 = 0;
+1573:             vertexArray[_XYZ][..., 0] = x[:, numpy.newaxis]
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_slice__281);
    __Pyx_GIVEREF(__pyx_slice__281);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__281);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_x, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__281 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__281)) __PYX_ERR(0, 1573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__281);
  __Pyx_GIVEREF(__pyx_slice__281);
    if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_tuple__282, __pyx_t_2) < 0)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__282 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__282)) __PYX_ERR(0, 1573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__282);
  __Pyx_GIVEREF(__pyx_tuple__282);
+1574:             vertexArray[_XYZ][..., 1] = y[:, numpy.newaxis]
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_slice__283);
    __Pyx_GIVEREF(__pyx_slice__283);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__283);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_y, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__283 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__283)) __PYX_ERR(0, 1574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__283);
  __Pyx_GIVEREF(__pyx_slice__283);
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_tuple__284, __pyx_t_6) < 0)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_tuple__284 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__284)) __PYX_ERR(0, 1574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__284);
  __Pyx_GIVEREF(__pyx_tuple__284);
+1575:             vertexArray[_XYZ][..., 2] = z[:, numpy.newaxis]
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_slice__285);
    __Pyx_GIVEREF(__pyx_slice__285);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__285);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_z, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_slice__285 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__285)) __PYX_ERR(0, 1575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__285);
  __Pyx_GIVEREF(__pyx_slice__285);
    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_tuple__286, __pyx_t_7) < 0)) __PYX_ERR(0, 1575, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__286 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__286)) __PYX_ERR(0, 1575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__286);
  __Pyx_GIVEREF(__pyx_tuple__286);
 1576: 
+1577:             va0 = numpy.array(vertexArray)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1577, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    } else {
      __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1577, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_vertexArray);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_vertexArray);
      PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_cur_scope->__pyx_v_vertexArray);
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_17, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1577, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_cur_scope->__pyx_v_va0 = __pyx_t_7;
    __pyx_t_7 = 0;
 1578: 
+1579:             va0[..., :3] += faceVertexTemplates[pymclevel.faces.FaceYIncreasing, ..., :3]
  __pyx_slice__287 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__287)) __PYX_ERR(0, 1579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__287);
  __Pyx_GIVEREF(__pyx_slice__287);
/* … */
    __Pyx_INCREF(__pyx_tuple__288);
    __pyx_t_18 = __pyx_tuple__288;
    __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va0, __pyx_t_18); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (unlikely(__pyx_v_9_renderer_faceVertexTemplates == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1579, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_faces); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __pyx_tuple__288 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__287); if (unlikely(!__pyx_tuple__288)) __PYX_ERR(0, 1579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__288);
  __Pyx_GIVEREF(__pyx_tuple__288);
    __pyx_t_17 = PyTuple_New(3); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_6);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_17, 1, Py_Ellipsis);
    __Pyx_INCREF(__pyx_slice__289);
    __Pyx_GIVEREF(__pyx_slice__289);
    PyTuple_SET_ITEM(__pyx_t_17, 2, __pyx_slice__289);
    __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_GetItem(__pyx_v_9_renderer_faceVertexTemplates, __pyx_t_17); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __pyx_t_17 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_va0, __pyx_t_18, __pyx_t_17) < 0)) __PYX_ERR(0, 1579, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __pyx_slice__289 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__289)) __PYX_ERR(0, 1579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__289);
  __Pyx_GIVEREF(__pyx_slice__289);
 1580: 
+1581:             overmask = overblocks > 0
    __pyx_t_17 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_overblocks, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_17); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1581, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_17);
    __pyx_cur_scope->__pyx_v_overmask = __pyx_t_17;
    __pyx_t_17 = 0;
+1582:             flatcolors[overmask] = level.materials.flatColors[:, 0][overblocks[overmask]][:, numpy.newaxis]
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_level, __pyx_n_s_materials); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_flatColors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
/* … */
  __pyx_slice__290 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__290)) __PYX_ERR(0, 1582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__290);
  __Pyx_GIVEREF(__pyx_slice__290);
    __pyx_t_17 = PyObject_GetItem(__pyx_t_6, __pyx_tuple__291); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_overblocks, __pyx_cur_scope->__pyx_v_overmask); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyObject_GetItem(__pyx_t_17, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_tuple__291 = PyTuple_Pack(2, __pyx_slice__290, __pyx_int_0); if (unlikely(!__pyx_tuple__291)) __PYX_ERR(0, 1582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__291);
  __Pyx_GIVEREF(__pyx_tuple__291);
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_slice__292);
    __Pyx_GIVEREF(__pyx_slice__292);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__292);
    __Pyx_GIVEREF(__pyx_t_17);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_17);
    __pyx_t_17 = 0;
    __pyx_t_17 = PyObject_GetItem(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_flatcolors, __pyx_cur_scope->__pyx_v_overmask, __pyx_t_17) < 0)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __pyx_slice__292 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__292)) __PYX_ERR(0, 1582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__292);
  __Pyx_GIVEREF(__pyx_slice__292);
 1583: 
+1584:             if self.detailLevel == 2:
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_detailLevel); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1584, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_17, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1584, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1584, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_5) {
/* … */
    }
+1585:                 heightfactor = (y / float(2.0 * ch.world.Height)) + 0.5
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_ch, __pyx_n_s_world); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Height); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_17); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      __pyx_t_17 = __Pyx_PyNumber_Float(__pyx_t_6); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_cur_scope->__pyx_v_y, __pyx_t_17); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      __pyx_t_17 = __Pyx_PyFloat_AddObjC(__pyx_t_6, __pyx_float_0_5, 0.5, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GIVEREF(__pyx_t_17);
      __pyx_cur_scope->__pyx_v_heightfactor = __pyx_t_17;
      __pyx_t_17 = 0;
+1586:                 flatcolors[..., :3] = flatcolors[..., :3].astype(float) * heightfactor[:, numpy.newaxis, numpy.newaxis]
  __pyx_slice__293 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__293)) __PYX_ERR(0, 1586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__293);
  __Pyx_GIVEREF(__pyx_slice__293);
/* … */
      __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_flatcolors, __pyx_tuple__294); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_astype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_17 = __Pyx_PyObject_CallOneArg(__pyx_t_7, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1586, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_17);
      } else {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1586, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
        __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject *)(&PyFloat_Type)));
        __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1586, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_17);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__294 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__293); if (unlikely(!__pyx_tuple__294)) __PYX_ERR(0, 1586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__294);
  __Pyx_GIVEREF(__pyx_tuple__294);
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_slice__295);
      __Pyx_GIVEREF(__pyx_slice__295);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__295);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_6);
      __pyx_t_2 = 0;
      __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_heightfactor, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyNumber_Multiply(__pyx_t_17, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_slice__295 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__295)) __PYX_ERR(0, 1586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__295);
  __Pyx_GIVEREF(__pyx_slice__295);
  __pyx_slice__296 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__296)) __PYX_ERR(0, 1586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__296);
  __Pyx_GIVEREF(__pyx_slice__296);
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_flatcolors, __pyx_tuple__297, __pyx_t_7) < 0)) __PYX_ERR(0, 1586, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__297 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__296); if (unlikely(!__pyx_tuple__297)) __PYX_ERR(0, 1586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__297);
  __Pyx_GIVEREF(__pyx_tuple__297);
 1587: 
+1588:             _RGBA = numpy.s_[..., 12:16]
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1588, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_s); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1588, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__298 = PySlice_New(__pyx_int_12, __pyx_int_16, Py_None); if (unlikely(!__pyx_slice__298)) __PYX_ERR(0, 1588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__298);
  __Pyx_GIVEREF(__pyx_slice__298);
    __pyx_t_7 = PyObject_GetItem(__pyx_t_6, __pyx_tuple__299); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1588, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_cur_scope->__pyx_v__RGBA = __pyx_t_7;
    __pyx_t_7 = 0;
  __pyx_tuple__299 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__298); if (unlikely(!__pyx_tuple__299)) __PYX_ERR(0, 1588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__299);
  __Pyx_GIVEREF(__pyx_tuple__299);
+1589:             va0.view('uint8')[_RGBA] = flatcolors
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_va0, __pyx_n_s_view); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__300, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_cur_scope->__pyx_v__RGBA, __pyx_cur_scope->__pyx_v_flatcolors) < 0)) __PYX_ERR(0, 1589, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__300 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__300)) __PYX_ERR(0, 1589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__300);
  __Pyx_GIVEREF(__pyx_tuple__300);
 1590: 
+1591:             va0[_XYZ][:, :, 0] *= step
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va0, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_slice__301 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__301)) __PYX_ERR(0, 1591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__301);
  __Pyx_GIVEREF(__pyx_slice__301);
  __pyx_slice__302 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__302)) __PYX_ERR(0, 1591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__302);
  __Pyx_GIVEREF(__pyx_slice__302);
    __Pyx_INCREF(__pyx_tuple__303);
    __pyx_t_18 = __pyx_tuple__303;
    __pyx_t_6 = PyObject_GetItem(__pyx_t_7, __pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_17 = PyNumber_InPlaceMultiply(__pyx_t_6, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_18, __pyx_t_17) < 0)) __PYX_ERR(0, 1591, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__303 = PyTuple_Pack(3, __pyx_slice__301, __pyx_slice__302, __pyx_int_0); if (unlikely(!__pyx_tuple__303)) __PYX_ERR(0, 1591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__303);
  __Pyx_GIVEREF(__pyx_tuple__303);
+1592:             va0[_XYZ][:, :, 2] *= step
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1592, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_17 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va0, __pyx_t_7); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1592, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__304 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__304)) __PYX_ERR(0, 1592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__304);
  __Pyx_GIVEREF(__pyx_slice__304);
  __pyx_slice__305 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__305)) __PYX_ERR(0, 1592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__305);
  __Pyx_GIVEREF(__pyx_slice__305);
    __Pyx_INCREF(__pyx_tuple__306);
    __pyx_t_18 = __pyx_tuple__306;
    __pyx_t_7 = PyObject_GetItem(__pyx_t_17, __pyx_t_18); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1592, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_t_7, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1592, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_17, __pyx_t_18, __pyx_t_6) < 0)) __PYX_ERR(0, 1592, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __pyx_tuple__306 = PyTuple_Pack(3, __pyx_slice__304, __pyx_slice__305, __pyx_int_2); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(0, 1592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__306);
  __Pyx_GIVEREF(__pyx_tuple__306);
 1593: 
+1594:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 3;
    return __pyx_r;
    __pyx_L23_resume_from_yield:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1594, __pyx_L1_error)
+1595:             if self.detailLevel == 2:
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_detailLevel); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_17, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1595, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_5) {
/* … */
    }
+1596:                 self.vertexArrays = [va0]
      __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_va0);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_va0);
      PyList_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_va0);
      if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_t_6) < 0) __PYX_ERR(0, 1596, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1597:                 return
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = NULL;
      goto __pyx_L0;
 1598: 
+1599:             va1 = numpy.array(vertexArray)
    __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1599, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1599, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __pyx_t_17 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_17)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_17);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_17) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1599, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_17); __pyx_t_17 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_vertexArray);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_vertexArray);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_cur_scope->__pyx_v_vertexArray);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1599, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_cur_scope->__pyx_v_va1 = __pyx_t_6;
    __pyx_t_6 = 0;
+1600:             va1[..., :3] += faceVertexTemplates[pymclevel.faces.FaceXIncreasing, ..., :3]
  __pyx_slice__307 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__307)) __PYX_ERR(0, 1600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__307);
  __Pyx_GIVEREF(__pyx_slice__307);
/* … */
    __Pyx_INCREF(__pyx_tuple__308);
    __pyx_t_18 = __pyx_tuple__308;
    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va1, __pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__pyx_v_9_renderer_faceVertexTemplates == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1600, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__308 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__307); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(0, 1600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__308);
  __Pyx_GIVEREF(__pyx_tuple__308);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_2, 1, Py_Ellipsis);
    __Pyx_INCREF(__pyx_slice__309);
    __Pyx_GIVEREF(__pyx_slice__309);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_slice__309);
    __pyx_t_7 = 0;
    __pyx_t_7 = PyObject_GetItem(__pyx_v_9_renderer_faceVertexTemplates, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_va1, __pyx_t_18, __pyx_t_2) < 0)) __PYX_ERR(0, 1600, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __pyx_slice__309 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__309)) __PYX_ERR(0, 1600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__309);
  __Pyx_GIVEREF(__pyx_slice__309);
 1601: 
+1602:             va1[_XYZ][:, (0, 1), 1] = depths[nonAirBlocks].ravel()[:, numpy.newaxis]  # stretch to floor
    __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_depths, __pyx_cur_scope->__pyx_v_nonAirBlocks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1602, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1602, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_slice__310);
    __Pyx_GIVEREF(__pyx_slice__310);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__310);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_7 = PyObject_GetItem(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_slice__310 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__310)) __PYX_ERR(0, 1602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__310);
  __Pyx_GIVEREF(__pyx_slice__310);
  __pyx_slice__311 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__311)) __PYX_ERR(0, 1602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__311);
  __Pyx_GIVEREF(__pyx_slice__311);
  __pyx_tuple__312 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_1); if (unlikely(!__pyx_tuple__312)) __PYX_ERR(0, 1602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__312);
  __Pyx_GIVEREF(__pyx_tuple__312);
    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_tuple__313, __pyx_t_7) < 0)) __PYX_ERR(0, 1602, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__313 = PyTuple_Pack(3, __pyx_slice__311, __pyx_tuple__312, __pyx_int_1); if (unlikely(!__pyx_tuple__313)) __PYX_ERR(0, 1602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__313);
  __Pyx_GIVEREF(__pyx_tuple__313);
+1603:             va1[_XYZ][:, (1, 2), 0] -= 1.0  # turn diagonally
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va1, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__314 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__314)) __PYX_ERR(0, 1603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__314);
  __Pyx_GIVEREF(__pyx_slice__314);
  __pyx_tuple__315 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_2); if (unlikely(!__pyx_tuple__315)) __PYX_ERR(0, 1603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__315);
  __Pyx_GIVEREF(__pyx_tuple__315);
    __Pyx_INCREF(__pyx_tuple__316);
    __pyx_t_18 = __pyx_tuple__316;
    __pyx_t_7 = PyObject_GetItem(__pyx_t_2, __pyx_t_18); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyFloat_SubtractObjC(__pyx_t_7, __pyx_float_1_0, 1.0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_18, __pyx_t_6) < 0)) __PYX_ERR(0, 1603, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__316 = PyTuple_Pack(3, __pyx_slice__314, __pyx_tuple__315, __pyx_int_0); if (unlikely(!__pyx_tuple__316)) __PYX_ERR(0, 1603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__316);
  __Pyx_GIVEREF(__pyx_tuple__316);
+1604:             va1[_XYZ][:, (2, 3), 1] -= 0.5  # drop down to prevent intersection pixels
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1604, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1604, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__317 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__317)) __PYX_ERR(0, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__317);
  __Pyx_GIVEREF(__pyx_slice__317);
  __pyx_tuple__318 = PyTuple_Pack(2, __pyx_int_2, __pyx_int_3); if (unlikely(!__pyx_tuple__318)) __PYX_ERR(0, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__318);
  __Pyx_GIVEREF(__pyx_tuple__318);
    __Pyx_INCREF(__pyx_tuple__319);
    __pyx_t_18 = __pyx_tuple__319;
    __pyx_t_2 = PyObject_GetItem(__pyx_t_6, __pyx_t_18); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1604, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyFloat_SubtractObjC(__pyx_t_2, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1604, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_t_18, __pyx_t_7) < 0)) __PYX_ERR(0, 1604, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_tuple__319 = PyTuple_Pack(3, __pyx_slice__317, __pyx_tuple__318, __pyx_int_1); if (unlikely(!__pyx_tuple__319)) __PYX_ERR(0, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__319);
  __Pyx_GIVEREF(__pyx_tuple__319);
 1605: 
+1606:             va1[_XYZ][:, :, 0] *= step
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_slice__320 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__320)) __PYX_ERR(0, 1606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__320);
  __Pyx_GIVEREF(__pyx_slice__320);
  __pyx_slice__321 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__321)) __PYX_ERR(0, 1606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__321);
  __Pyx_GIVEREF(__pyx_slice__321);
    __Pyx_INCREF(__pyx_tuple__322);
    __pyx_t_18 = __pyx_tuple__322;
    __pyx_t_6 = PyObject_GetItem(__pyx_t_7, __pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyNumber_InPlaceMultiply(__pyx_t_6, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_18, __pyx_t_2) < 0)) __PYX_ERR(0, 1606, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__322 = PyTuple_Pack(3, __pyx_slice__320, __pyx_slice__321, __pyx_int_0); if (unlikely(!__pyx_tuple__322)) __PYX_ERR(0, 1606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__322);
  __Pyx_GIVEREF(__pyx_tuple__322);
+1607:             va1[_XYZ][:, :, 2] *= step
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va1, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__323 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__323)) __PYX_ERR(0, 1607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__323);
  __Pyx_GIVEREF(__pyx_slice__323);
  __pyx_slice__324 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__324)) __PYX_ERR(0, 1607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__324);
  __Pyx_GIVEREF(__pyx_slice__324);
    __Pyx_INCREF(__pyx_tuple__325);
    __pyx_t_18 = __pyx_tuple__325;
    __pyx_t_7 = PyObject_GetItem(__pyx_t_2, __pyx_t_18); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_t_7, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_18, __pyx_t_6) < 0)) __PYX_ERR(0, 1607, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__325 = PyTuple_Pack(3, __pyx_slice__323, __pyx_slice__324, __pyx_int_2); if (unlikely(!__pyx_tuple__325)) __PYX_ERR(0, 1607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__325);
  __Pyx_GIVEREF(__pyx_tuple__325);
 1608: 
+1609:             flatcolors = flatcolors.astype(float) * 0.8
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_flatcolors, __pyx_n_s_astype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1609, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1609, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
      PyTuple_SET_ITEM(__pyx_t_17, 0+1, ((PyObject *)(&PyFloat_Type)));
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1609, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_float_0_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_flatcolors);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_flatcolors, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
 1610: 
+1611:             va1.view('uint8')[_RGBA] = flatcolors
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_va1, __pyx_n_s_view); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__326, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_cur_scope->__pyx_v__RGBA, __pyx_cur_scope->__pyx_v_flatcolors) < 0)) __PYX_ERR(0, 1611, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__326 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__326)) __PYX_ERR(0, 1611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__326);
  __Pyx_GIVEREF(__pyx_tuple__326);
+1612:             grassmask = topBlocks[nonAirBlocks] == 2
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_topBlocks, __pyx_cur_scope->__pyx_v_nonAirBlocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_2, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_cur_scope->__pyx_v_grassmask = __pyx_t_6;
    __pyx_t_6 = 0;
 1613:             # color grass sides with dirt's color
+1614:             va1.view('uint8')[_RGBA][grassmask] = level.materials.flatColors[:, 0][[3]][:, numpy.newaxis]
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_level, __pyx_n_s_materials); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_flatColors); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_slice__327 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__327)) __PYX_ERR(0, 1614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__327);
  __Pyx_GIVEREF(__pyx_slice__327);
    __pyx_t_6 = PyObject_GetItem(__pyx_t_2, __pyx_tuple__328); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_int_3);
    __Pyx_GIVEREF(__pyx_int_3);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_int_3);
    __pyx_t_17 = PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__328 = PyTuple_Pack(2, __pyx_slice__327, __pyx_int_0); if (unlikely(!__pyx_tuple__328)) __PYX_ERR(0, 1614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__328);
  __Pyx_GIVEREF(__pyx_tuple__328);
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_slice__329);
    __Pyx_GIVEREF(__pyx_slice__329);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__329);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_GetItem(__pyx_t_17, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_va1, __pyx_n_s_view); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  __pyx_slice__329 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__329)) __PYX_ERR(0, 1614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__329);
  __Pyx_GIVEREF(__pyx_slice__329);
    __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__330, NULL); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_GetItem(__pyx_t_17, __pyx_cur_scope->__pyx_v__RGBA); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_cur_scope->__pyx_v_grassmask, __pyx_t_6) < 0)) __PYX_ERR(0, 1614, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_tuple__330 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__330)) __PYX_ERR(0, 1614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__330);
  __Pyx_GIVEREF(__pyx_tuple__330);
 1615: 
+1616:             va2 = numpy.array(va1)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1616, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1616, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_17))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_17);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_17, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_cur_scope->__pyx_v_va1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_va1);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_va1);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_cur_scope->__pyx_v_va1);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_cur_scope->__pyx_v_va2 = __pyx_t_6;
    __pyx_t_6 = 0;
+1617:             va2[_XYZ][:, (1, 2), 0] += step
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_17 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va2, __pyx_t_6); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_slice__331 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__331)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__331);
  __Pyx_GIVEREF(__pyx_slice__331);
  __pyx_tuple__332 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_2); if (unlikely(!__pyx_tuple__332)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__332);
  __Pyx_GIVEREF(__pyx_tuple__332);
    __Pyx_INCREF(__pyx_tuple__333);
    __pyx_t_18 = __pyx_tuple__333;
    __pyx_t_6 = PyObject_GetItem(__pyx_t_17, __pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_17, __pyx_t_18, __pyx_t_7) < 0)) __PYX_ERR(0, 1617, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __pyx_tuple__333 = PyTuple_Pack(3, __pyx_slice__331, __pyx_tuple__332, __pyx_int_0); if (unlikely(!__pyx_tuple__333)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__333);
  __Pyx_GIVEREF(__pyx_tuple__333);
+1618:             va2[_XYZ][:, (0, 3), 0] -= step
    __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_va2, __pyx_t_17); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
/* … */
  __pyx_slice__334 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__334)) __PYX_ERR(0, 1618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__334);
  __Pyx_GIVEREF(__pyx_slice__334);
  __pyx_tuple__335 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_3); if (unlikely(!__pyx_tuple__335)) __PYX_ERR(0, 1618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__335);
  __Pyx_GIVEREF(__pyx_tuple__335);
    __Pyx_INCREF(__pyx_tuple__336);
    __pyx_t_18 = __pyx_tuple__336;
    __pyx_t_17 = PyObject_GetItem(__pyx_t_7, __pyx_t_18); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_6 = PyNumber_InPlaceSubtract(__pyx_t_17, __pyx_cur_scope->__pyx_v_step); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_18, __pyx_t_6) < 0)) __PYX_ERR(0, 1618, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__336 = PyTuple_Pack(3, __pyx_slice__334, __pyx_tuple__335, __pyx_int_0); if (unlikely(!__pyx_tuple__336)) __PYX_ERR(0, 1618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__336);
  __Pyx_GIVEREF(__pyx_tuple__336);
 1619: 
+1620:             vertexArrays = [va1, va2, va0]
    __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_va1);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_va1);
    PyList_SET_ITEM(__pyx_t_7, 0, __pyx_cur_scope->__pyx_v_va1);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_va2);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_va2);
    PyList_SET_ITEM(__pyx_t_7, 1, __pyx_cur_scope->__pyx_v_va2);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_va0);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_va0);
    PyList_SET_ITEM(__pyx_t_7, 2, __pyx_cur_scope->__pyx_v_va0);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vertexArrays);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_vertexArrays, ((PyObject*)__pyx_t_7));
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_t_7 = 0;
 1621: 
+1622:         self.vertexArrays = vertexArrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_vertexArrays) < 0) __PYX_ERR(0, 1622, __pyx_L1_error)
 1623: 
 1624: 
+1625: class OverheadBlockRenderer(LowDetailBlockRenderer):
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LowDetailBlockRenderer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_OverheadBlockRenderer, __pyx_n_s_OverheadBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_OverheadBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OverheadBlockRenderer, __pyx_t_5) < 0) __PYX_ERR(0, 1625, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1626:     detailLevels = (2,)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_detailLevels, __pyx_tuple__720) < 0) __PYX_ERR(0, 1626, __pyx_L1_error)
/* … */
  __pyx_tuple__720 = PyTuple_Pack(1, __pyx_int_2); if (unlikely(!__pyx_tuple__720)) __PYX_ERR(0, 1626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__720);
  __Pyx_GIVEREF(__pyx_tuple__720);
 1627: 
 1628: 
+1629: class GenericBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_GenericBlockRenderer, __pyx_n_s_GenericBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_GenericBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GenericBlockRenderer, __pyx_t_11) < 0) __PYX_ERR(0, 1629, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1630:     renderstate = ChunkCalculator.renderstateAlphaTest
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_renderstateAlphaTest); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_11) < 0) __PYX_ERR(0, 1630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 1631: 
+1632:     materialIndex = 1
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_materialIndex, __pyx_int_1) < 0) __PYX_ERR(0, 1632, __pyx_L1_error)
 1633: 
+1634:     def makeGenericVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_20GenericBlockRenderer_1makeGenericVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_20GenericBlockRenderer_1makeGenericVertices = {"makeGenericVertices", (PyCFunction)__pyx_pw_9_renderer_20GenericBlockRenderer_1makeGenericVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_20GenericBlockRenderer_1makeGenericVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeGenericVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeGenericVertices", 1, 7, 7, 1); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeGenericVertices", 1, 7, 7, 2); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeGenericVertices", 1, 7, 7, 3); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeGenericVertices", 1, 7, 7, 4); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeGenericVertices", 1, 7, 7, 5); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeGenericVertices", 1, 7, 7, 6); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeGenericVertices") < 0)) __PYX_ERR(0, 1634, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeGenericVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1634, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.GenericBlockRenderer.makeGenericVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_20GenericBlockRenderer_makeGenericVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_20GenericBlockRenderer_makeGenericVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_21_makeGenericVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeGenericVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_21_makeGenericVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_21_makeGenericVertices(__pyx_ptype_9_renderer___pyx_scope_struct_21_makeGenericVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_20GenericBlockRenderer_2generator14, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeGenericVertices, __pyx_n_s_GenericBlockRenderer_makeGeneric, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1634, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.GenericBlockRenderer.makeGenericVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_20GenericBlockRenderer_2generator14(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1634, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("makeGenericVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__721 = PyTuple_Pack(18, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_vertexArrays, __pyx_n_s_append, __pyx_n_s_materialIndices, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_blockIndices, __pyx_n_s_theseBlocks, __pyx_n_s_bdata, __pyx_n_s_vertexArray, __pyx_n_s_grass); if (unlikely(!__pyx_tuple__721)) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__721);
  __Pyx_GIVEREF(__pyx_tuple__721);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_20GenericBlockRenderer_1makeGenericVertices, 0, __pyx_n_s_GenericBlockRenderer_makeGeneric, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__722)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeGenericVertices, __pyx_t_11) < 0) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_codeobj__722 = (PyObject*)__Pyx_PyCode_New(7, 0, 18, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__721, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeGenericVertices, 1634, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__722)) __PYX_ERR(0, 1634, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_21_makeGenericVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_bdata;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_grass;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_theseBlocks;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_v_vertexArrays;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+1635:         vertexArrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_vertexArrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1636:         append = vertexArrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+1637:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+1638:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1638, __pyx_L1_error)
 1639: 
+1640:         for (direction, exposedFaceIndices) in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1640, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1640, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1640, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1640, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1640, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1640, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1640, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1640, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1641:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1641, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1641, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+1642:             blockIndices = materialIndices & exposedFaceIndices
    __pyx_t_4 = PyNumber_And(__pyx_cur_scope->__pyx_v_materialIndices, __pyx_cur_scope->__pyx_v_exposedFaceIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1642, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
 1643: 
+1644:             theseBlocks = blocks[blockIndices]
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_theseBlocks);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_theseBlocks, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+1645:             bdata = blockData[blockIndices]
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1645, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_bdata);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_bdata, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+1646:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+1647:             if not len(vertexArray):
    __pyx_t_8 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 1647, __pyx_L1_error)
    __pyx_t_10 = ((!(__pyx_t_8 != 0)) != 0);
    if (__pyx_t_10) {
/* … */
    }
+1648:                 continue
      goto __pyx_L5_continue;
 1649: 
+1650:             vertexArray[_ST] += texMap(theseBlocks, bdata, direction)[:, numpy.newaxis, 0:2]
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_7 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_11 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_11)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_12 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    if (__pyx_t_11) {
      __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_theseBlocks);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_theseBlocks);
    PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_8, __pyx_cur_scope->__pyx_v_theseBlocks);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_bdata);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_bdata);
    PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_8, __pyx_cur_scope->__pyx_v_bdata);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_8, __pyx_cur_scope->__pyx_v_direction);
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__337 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__337)) __PYX_ERR(0, 1650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__337);
  __Pyx_GIVEREF(__pyx_slice__337);
    __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_slice__337);
    __Pyx_GIVEREF(__pyx_slice__337);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__337);
    __Pyx_GIVEREF(__pyx_t_12);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_12);
    __Pyx_INCREF(__pyx_slice__338);
    __Pyx_GIVEREF(__pyx_slice__338);
    PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_slice__338);
    __pyx_t_12 = 0;
    __pyx_t_12 = PyObject_GetItem(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4, __pyx_t_7) < 0)) __PYX_ERR(0, 1650, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_slice__338 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__338)) __PYX_ERR(0, 1650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__338);
  __Pyx_GIVEREF(__pyx_slice__338);
 1651: 
+1652:             vertexArray.view('uint8')[_RGB] *= facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__339, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = PyObject_GetItem(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_9, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_11);
    __Pyx_GIVEREF(__pyx_t_13);
    PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_13);
    __pyx_t_11 = 0;
    __pyx_t_13 = 0;
    __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyNumber_InPlaceMultiply(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_4, __pyx_t_9) < 0)) __PYX_ERR(0, 1652, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_tuple__339 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__339)) __PYX_ERR(0, 1652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__339);
  __Pyx_GIVEREF(__pyx_tuple__339);
+1653:             if self.materials.name in ("Alpha", "Pocket"):
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_materials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_Alpha, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1653, __pyx_L1_error)
    if (!__pyx_t_14) {
    } else {
      __pyx_t_10 = __pyx_t_14;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_Pocket, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1653, __pyx_L1_error)
    __pyx_t_10 = __pyx_t_14;
    __pyx_L9_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_14 = (__pyx_t_10 != 0);
    if (__pyx_t_14) {
/* … */
    }
+1654:                 if direction == pymclevel.faces.FaceYIncreasing:
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1654, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1654, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1654, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1654, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1654, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_14) {
/* … */
      }
+1655:                     grass = theseBlocks == alphaMaterials.Grass.ID
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1655, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Grass); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1655, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ID); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1655, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_theseBlocks, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1655, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_grass);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_grass, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;
+1656:                     vertexArray.view('uint8')[_RGB][grass] = vertexArray.view('uint8')[_RGB][grass].astype(
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__340, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_13 = PyObject_GetItem(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_GetItem(__pyx_t_13, __pyx_cur_scope->__pyx_v_grass); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_astype); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
/* … */
  __pyx_tuple__340 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__340)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__340);
  __Pyx_GIVEREF(__pyx_tuple__340);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__341, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_7 = PyObject_GetItem(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_cur_scope->__pyx_v_grass, __pyx_t_9) < 0)) __PYX_ERR(0, 1656, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_tuple__341 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__341)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__341);
  __Pyx_GIVEREF(__pyx_tuple__341);
+1657:                         float) * self.grassColor
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
          }
        }
        if (!__pyx_t_7) {
          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_13, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1656, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
        } else {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1656, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
          __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
          __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, ((PyObject *)(&PyFloat_Type)));
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1656, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_grassColor); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1657, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_9 = PyNumber_Multiply(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1657, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+1658:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L12_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1658, __pyx_L1_error)
 1659: 
+1660:             append(vertexArray)
    __pyx_t_15 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_vertexArrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 1660, __pyx_L1_error)
 1661: 
+1662:         self.vertexArrays = vertexArrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_vertexArrays) < 0) __PYX_ERR(0, 1662, __pyx_L1_error)
 1663: 
+1664:     grassColor = grassColorDefault = [0.39, 0.71, 0.23]  # 62C743
  __pyx_t_11 = PyList_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(__pyx_float_0_39);
  __Pyx_GIVEREF(__pyx_float_0_39);
  PyList_SET_ITEM(__pyx_t_11, 0, __pyx_float_0_39);
  __Pyx_INCREF(__pyx_float_0_71);
  __Pyx_GIVEREF(__pyx_float_0_71);
  PyList_SET_ITEM(__pyx_t_11, 1, __pyx_float_0_71);
  __Pyx_INCREF(__pyx_float_0_23);
  __Pyx_GIVEREF(__pyx_float_0_23);
  PyList_SET_ITEM(__pyx_t_11, 2, __pyx_float_0_23);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_grassColor, __pyx_t_11) < 0) __PYX_ERR(0, 1664, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_grassColorDefault, __pyx_t_11) < 0) __PYX_ERR(0, 1664, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 1665: 
+1666:     makeVertices = makeGenericVertices
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeGenericVertices);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeGenericVertices);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_11) < 0) __PYX_ERR(0, 1666, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 1667: 
 1668: 
+1669: class LeafBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_LeafBlockRenderer, __pyx_n_s_LeafBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_LeafBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LeafBlockRenderer, __pyx_t_5) < 0) __PYX_ERR(0, 1669, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1670:     @classmethod
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1670, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_5) < 0) __PYX_ERR(0, 1671, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1671:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17LeafBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17LeafBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_17LeafBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17LeafBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 1671, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 1671, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1671, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.LeafBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17LeafBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17LeafBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_block = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.LeafBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_block);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__723 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_block); if (unlikely(!__pyx_tuple__723)) __PYX_ERR(0, 1671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__723);
  __Pyx_GIVEREF(__pyx_tuple__723);
/* … */
  __pyx_t_11 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17LeafBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_LeafBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__724)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_codeobj__724 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__723, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 1671, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__724)) __PYX_ERR(0, 1671, __pyx_L1_error)
+1672:         return [block.ID for block in mats.blocksByType["LEAVES"]]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1672, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_LEAVES); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1672, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1672, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1672, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1672, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1672, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1672, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1672, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_block, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_block, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1672, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 1673: 
+1674:     @property
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1674, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1674, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_5) < 0) __PYX_ERR(0, 1675, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1675:     def renderstate(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17LeafBlockRenderer_3renderstate(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17LeafBlockRenderer_3renderstate = {"renderstate", (PyCFunction)__pyx_pw_9_renderer_17LeafBlockRenderer_3renderstate, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_17LeafBlockRenderer_3renderstate(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("renderstate (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_17LeafBlockRenderer_2renderstate(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17LeafBlockRenderer_2renderstate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("renderstate", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.LeafBlockRenderer.renderstate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_17LeafBlockRenderer_6generator15(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__725 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__725)) __PYX_ERR(0, 1675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__725);
  __Pyx_GIVEREF(__pyx_tuple__725);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17LeafBlockRenderer_3renderstate, 0, __pyx_n_s_LeafBlockRenderer_renderstate, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__726)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_codeobj__726 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__725, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_renderstate, 1675, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__726)) __PYX_ERR(0, 1675, __pyx_L1_error)
+1676:         if self.chunkCalculator.fastLeaves:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkCalculator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fastLeaves); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1676, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
/* … */
  }
+1677:             return ChunkCalculator.renderstatePlain
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1677, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_renderstatePlain); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1677, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
 1678:         else:
+1679:             return ChunkCalculator.renderstateAlphaTest
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1679, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_renderstateAlphaTest); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1679, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
 1680: 
+1681:     def makeLeafVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17LeafBlockRenderer_5makeLeafVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17LeafBlockRenderer_5makeLeafVertices = {"makeLeafVertices", (PyCFunction)__pyx_pw_9_renderer_17LeafBlockRenderer_5makeLeafVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17LeafBlockRenderer_5makeLeafVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeLeafVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeLeafVertices", 1, 7, 7, 1); __PYX_ERR(0, 1681, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeLeafVertices", 1, 7, 7, 2); __PYX_ERR(0, 1681, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeLeafVertices", 1, 7, 7, 3); __PYX_ERR(0, 1681, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeLeafVertices", 1, 7, 7, 4); __PYX_ERR(0, 1681, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeLeafVertices", 1, 7, 7, 5); __PYX_ERR(0, 1681, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeLeafVertices", 1, 7, 7, 6); __PYX_ERR(0, 1681, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeLeafVertices") < 0)) __PYX_ERR(0, 1681, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeLeafVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1681, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.LeafBlockRenderer.makeLeafVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17LeafBlockRenderer_4makeLeafVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17LeafBlockRenderer_4makeLeafVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_22_makeLeafVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeLeafVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_22_makeLeafVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_22_makeLeafVertices(__pyx_ptype_9_renderer___pyx_scope_struct_22_makeLeafVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_17LeafBlockRenderer_6generator15, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeLeafVertices, __pyx_n_s_LeafBlockRenderer_makeLeafVertic, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1681, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.LeafBlockRenderer.makeLeafVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_17LeafBlockRenderer_6generator15(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1681, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("makeLeafVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__727 = PyTuple_Pack(23, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_materialIndices, __pyx_n_s_blockIndices, __pyx_n_s_data, __pyx_n_s_leaves, __pyx_n_s_pines, __pyx_n_s_birches, __pyx_n_s_jungle, __pyx_n_s_acacia, __pyx_n_s_darkoak, __pyx_n_s_texes, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__727)) __PYX_ERR(0, 1681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__727);
  __Pyx_GIVEREF(__pyx_tuple__727);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17LeafBlockRenderer_5makeLeafVertices, 0, __pyx_n_s_LeafBlockRenderer_makeLeafVertic, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__728)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeLeafVertices, __pyx_t_5) < 0) __PYX_ERR(0, 1681, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_codeobj__728 = (PyObject*)__Pyx_PyCode_New(7, 0, 23, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__727, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeLeafVertices, 1681, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__728)) __PYX_ERR(0, 1681, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_22_makeLeafVertices {
  PyObject_HEAD
  PyObject *__pyx_v_acacia;
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_birches;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_darkoak;
  PyObject *__pyx_v_data;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_jungle;
  PyObject *__pyx_v_leaves;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_pines;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_texes;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+1682:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1683:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+1684:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+1685:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1685, __pyx_L1_error)
 1686: 
+1687:         if self.materials.name in ("Alpha", "Pocket"):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_materials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_Alpha, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1687, __pyx_L1_error)
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_Pocket, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1687, __pyx_L1_error)
  __pyx_t_5 = __pyx_t_6;
  __pyx_L6_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {
/* … */
    goto __pyx_L5;
  }
+1688:             if not self.chunkCalculator.fastLeaves:
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkCalculator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_fastLeaves); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1688, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1688, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = ((!__pyx_t_6) != 0);
    if (__pyx_t_5) {
/* … */
    }
+1689:                 blockIndices = materialIndices
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
      __pyx_cur_scope->__pyx_v_blockIndices = __pyx_cur_scope->__pyx_v_materialIndices;
+1690:                 data = blockData[blockIndices]
      __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1690, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_data = __pyx_t_1;
      __pyx_t_1 = 0;
+1691:                 data &= 0x3  # ignore decay states
      __pyx_t_1 = __Pyx_PyInt_AndObjC(__pyx_cur_scope->__pyx_v_data, __pyx_int_3, 0x3, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1691, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_data);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_data, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
+1692:                 leaves = (data == alphaMaterials.Leaves.blockData)
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Leaves); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_blockData); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1692, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_leaves = __pyx_t_2;
      __pyx_t_2 = 0;
+1693:                 pines = (data == alphaMaterials.PineLeaves.blockData)
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_PineLeaves); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_blockData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1693, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_pines = __pyx_t_1;
      __pyx_t_1 = 0;
+1694:                 birches = (data == alphaMaterials.BirchLeaves.blockData)
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1694, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_BirchLeaves); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1694, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_blockData); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1694, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1694, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_birches = __pyx_t_2;
      __pyx_t_2 = 0;
+1695:                 jungle = (data == alphaMaterials.JungleLeaves.blockData)
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1695, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_JungleLeaves); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1695, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_blockData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1695, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1695, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_jungle = __pyx_t_1;
      __pyx_t_1 = 0;
+1696:                 acacia = (data == alphaMaterials.AcaciaLeaves.blockData)
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1696, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_AcaciaLeaves); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1696, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_blockData); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1696, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1696, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_acacia = __pyx_t_2;
      __pyx_t_2 = 0;
+1697:                 darkoak = (data == alphaMaterials.DarkOakLeaves.blockData)
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_DarkOakLeaves); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1697, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_blockData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1697, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_darkoak = __pyx_t_1;
      __pyx_t_1 = 0;
+1698:                 texes = texMap(blocks[blockIndices], [0], 0)
      __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1698, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1698, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyList_SET_ITEM(__pyx_t_4, 0, __pyx_int_0);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
      __pyx_t_3 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_8 = 1;
        }
      }
      __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1698, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_int_0);
      __pyx_t_2 = 0;
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1698, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_texes = __pyx_t_1;
      __pyx_t_1 = 0;
 1699:         else:
+1700:             blockIndices = materialIndices
  /*else*/ {
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
    __pyx_cur_scope->__pyx_v_blockIndices = __pyx_cur_scope->__pyx_v_materialIndices;
+1701:             texes = texMap(blocks[blockIndices], [0], 0)
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyList_SET_ITEM(__pyx_t_9, 0, __pyx_int_0);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_4 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_2 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_9);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_8, __pyx_int_0);
    __pyx_t_3 = 0;
    __pyx_t_9 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_texes = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L5:;
 1702: 
+1703:         for (direction, exposedFaceIndices) in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_4 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1703, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1703, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1703, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1703, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1703, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      }
    } else {
      __pyx_t_7 = __pyx_t_10(__pyx_t_4);
      if (unlikely(!__pyx_t_7)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1703, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_7;
    __pyx_t_7 = 0;
/* … */
    __pyx_L9_continue:;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1704:             if self.materials.name in ("Alpha", "Pocket"):
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_materials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_9, __pyx_n_s_Alpha, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1704, __pyx_L1_error)
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L12_bool_binop_done;
    }
    __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_9, __pyx_n_s_Pocket, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1704, __pyx_L1_error)
    __pyx_t_5 = __pyx_t_6;
    __pyx_L12_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_6 = (__pyx_t_5 != 0);
    if (__pyx_t_6) {
/* … */
    }
+1705:                 if self.chunkCalculator.fastLeaves:
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkCalculator); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1705, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_fastLeaves); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1705, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1705, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_6) {
/* … */
      }
+1706:                     blockIndices = materialIndices & exposedFaceIndices
        __pyx_t_7 = PyNumber_And(__pyx_cur_scope->__pyx_v_materialIndices, __pyx_cur_scope->__pyx_v_exposedFaceIndices); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1706, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
+1707:                     data = blockData[blockIndices]
        __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1707, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_data);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_data, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
+1708:                     data &= 0x3  # ignore decay states
        __pyx_t_7 = __Pyx_PyInt_AndObjC(__pyx_cur_scope->__pyx_v_data, __pyx_int_3, 0x3, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1708, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_data);
        __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_data, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
+1709:                     leaves = (data == alphaMaterials.Leaves.blockData)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1709, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Leaves); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1709, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_blockData); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1709, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1709, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_leaves);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_leaves, __pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        __pyx_t_9 = 0;
+1710:                     pines = (data == alphaMaterials.PineLeaves.blockData)
        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1710, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_PineLeaves); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1710, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_blockData); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1710, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1710, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_pines);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_pines, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
+1711:                     birches = (data == alphaMaterials.BirchLeaves.blockData)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1711, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_BirchLeaves); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1711, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_blockData); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1711, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1711, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_birches);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_birches, __pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        __pyx_t_9 = 0;
+1712:                     jungle = (data == alphaMaterials.JungleLeaves.blockData)
        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1712, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_JungleLeaves); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1712, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_blockData); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1712, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1712, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_jungle);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_jungle, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
+1713:                     acacia = (data == alphaMaterials.AcaciaLeaves.blockData)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1713, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_AcaciaLeaves); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1713, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_blockData); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1713, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1713, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_acacia);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_acacia, __pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        __pyx_t_9 = 0;
+1714:                     darkoak = (data == alphaMaterials.DarkOakLeaves.blockData)
        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1714, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_DarkOakLeaves); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1714, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_blockData); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1714, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_data, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1714, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_darkoak);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_darkoak, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
 1715: 
+1716:                     texes = texMap(blocks[blockIndices], data, 0)
        __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1716, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
        __pyx_t_3 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_2 = NULL;
        __pyx_t_11 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_2)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_11 = 1;
          }
        }
        __pyx_t_12 = PyTuple_New(3+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1716, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        if (__pyx_t_2) {
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __pyx_t_2 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_t_9);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_data);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_data);
        PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_cur_scope->__pyx_v_data);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_11, __pyx_int_0);
        __pyx_t_9 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1716, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_texes);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_texes, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
 1717: 
+1718:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1718, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = PyObject_GetItem(__pyx_t_7, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1718, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1718, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_t_7 = 0;
+1719:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(!__pyx_cur_scope->__pyx_v_blockIndices)) { __Pyx_RaiseUnboundLocalError("blockIndices"); __PYX_ERR(0, 1719, __pyx_L1_error) }
    __pyx_t_12 = NULL;
    __pyx_t_11 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_11 = 1;
      }
    }
    __pyx_t_9 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_12) {
      __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_12); __pyx_t_12 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_11, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_11, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_t_7 = 0;
+1720:             if not len(vertexArray):
    __pyx_t_11 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1720, __pyx_L1_error)
    __pyx_t_6 = ((!(__pyx_t_11 != 0)) != 0);
    if (__pyx_t_6) {
/* … */
    }
+1721:                 continue
      goto __pyx_L9_continue;
 1722: 
+1723:             vertexArray[_ST] += texes[:, numpy.newaxis]
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(!__pyx_cur_scope->__pyx_v_texes)) { __Pyx_RaiseUnboundLocalError("texes"); __PYX_ERR(0, 1723, __pyx_L1_error) }
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_INCREF(__pyx_slice__342);
    __Pyx_GIVEREF(__pyx_slice__342);
    PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_slice__342);
    __Pyx_GIVEREF(__pyx_t_12);
    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_12);
    __pyx_t_12 = 0;
    __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_texes, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7, __pyx_t_9) < 0)) __PYX_ERR(0, 1723, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__342 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__342)) __PYX_ERR(0, 1723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__342);
  __Pyx_GIVEREF(__pyx_slice__342);
 1724: 
+1725:             if not self.chunkCalculator.fastLeaves:
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkCalculator); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_fastLeaves); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1725, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_5 = ((!__pyx_t_6) != 0);
    if (__pyx_t_5) {
/* … */
    }
+1726:                 vertexArray[_ST] -= (0x10, 0x0)
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_12 = PyNumber_InPlaceSubtract(__pyx_t_7, __pyx_tuple__343); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9, __pyx_t_12) < 0)) __PYX_ERR(0, 1726, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
  __pyx_tuple__343 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_0); if (unlikely(!__pyx_tuple__343)) __PYX_ERR(0, 1726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__343);
  __Pyx_GIVEREF(__pyx_tuple__343);
 1727: 
+1728:             vertexArray.view('uint8')[_RGB] *= facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__344, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_7 = PyObject_GetItem(__pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (unlikely(!__pyx_cur_scope->__pyx_v_blockIndices)) { __Pyx_RaiseUnboundLocalError("blockIndices"); __PYX_ERR(0, 1728, __pyx_L1_error) }
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_2, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_13);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_13);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_14);
    __pyx_t_13 = 0;
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyNumber_InPlaceMultiply(__pyx_t_7, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_9, __pyx_t_2) < 0)) __PYX_ERR(0, 1728, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__344 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__344)) __PYX_ERR(0, 1728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__344);
  __Pyx_GIVEREF(__pyx_tuple__344);
+1729:             if self.materials.name in ("Alpha", "Pocket"):
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_materials); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_9, __pyx_n_s_Alpha, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1729, __pyx_L1_error)
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L18_bool_binop_done;
    }
    __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_9, __pyx_n_s_Pocket, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1729, __pyx_L1_error)
    __pyx_t_5 = __pyx_t_6;
    __pyx_L18_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_6 = (__pyx_t_5 != 0);
    if (__pyx_t_6) {
/* … */
    }
+1730:                 vertexArray.view('uint8')[_RGB][leaves] = vertexArray.view('uint8')[_RGB][leaves].astype(
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__345, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_14 = PyObject_GetItem(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_leaves)) { __Pyx_RaiseUnboundLocalError("leaves"); __PYX_ERR(0, 1730, __pyx_L1_error) }
      __pyx_t_12 = PyObject_GetItem(__pyx_t_14, __pyx_cur_scope->__pyx_v_leaves); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_astype); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
/* … */
  __pyx_tuple__345 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__345)) __PYX_ERR(0, 1730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__345);
  __Pyx_GIVEREF(__pyx_tuple__345);
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_tuple__346, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_12 = PyObject_GetItem(__pyx_t_9, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_leaves)) { __Pyx_RaiseUnboundLocalError("leaves"); __PYX_ERR(0, 1730, __pyx_L1_error) }
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_leaves, __pyx_t_2) < 0)) __PYX_ERR(0, 1730, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__346 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__346)) __PYX_ERR(0, 1730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__346);
  __Pyx_GIVEREF(__pyx_tuple__346);
+1731:                     float) * self.leafColor
      __pyx_t_12 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_14);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_14, function);
        }
      }
      if (!__pyx_t_12) {
        __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_14, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1730, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
      } else {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1730, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __pyx_t_12 = NULL;
        __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
        __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject *)(&PyFloat_Type)));
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_2, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1730, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_leafColor); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1731, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_2 = PyNumber_Multiply(__pyx_t_9, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1731, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+1732:                 vertexArray.view('uint8')[_RGB][pines] = vertexArray.view('uint8')[_RGB][pines].astype(
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__347, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_9 = PyObject_GetItem(__pyx_t_14, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_pines)) { __Pyx_RaiseUnboundLocalError("pines"); __PYX_ERR(0, 1732, __pyx_L1_error) }
      __pyx_t_12 = PyObject_GetItem(__pyx_t_9, __pyx_cur_scope->__pyx_v_pines); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_astype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
/* … */
  __pyx_tuple__347 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__347)) __PYX_ERR(0, 1732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__347);
  __Pyx_GIVEREF(__pyx_tuple__347);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__348, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_12 = PyObject_GetItem(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_pines)) { __Pyx_RaiseUnboundLocalError("pines"); __PYX_ERR(0, 1732, __pyx_L1_error) }
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_pines, __pyx_t_14) < 0)) __PYX_ERR(0, 1732, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__348 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__348)) __PYX_ERR(0, 1732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__348);
  __Pyx_GIVEREF(__pyx_tuple__348);
+1733:                     float) * self.pineLeafColor
      __pyx_t_12 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      if (!__pyx_t_12) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_9, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1732, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1732, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL;
        __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
        __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
        PyTuple_SET_ITEM(__pyx_t_14, 0+1, ((PyObject *)(&PyFloat_Type)));
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1732, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_pineLeafColor); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1733, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_14 = PyNumber_Multiply(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1733, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+1734:                 vertexArray.view('uint8')[_RGB][birches] = vertexArray.view('uint8')[_RGB][birches].astype(
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__349, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_2 = PyObject_GetItem(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_birches)) { __Pyx_RaiseUnboundLocalError("birches"); __PYX_ERR(0, 1734, __pyx_L1_error) }
      __pyx_t_12 = PyObject_GetItem(__pyx_t_2, __pyx_cur_scope->__pyx_v_birches); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_astype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
/* … */
  __pyx_tuple__349 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__349)) __PYX_ERR(0, 1734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__349);
  __Pyx_GIVEREF(__pyx_tuple__349);
      __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__350, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_12 = PyObject_GetItem(__pyx_t_14, __pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_birches)) { __Pyx_RaiseUnboundLocalError("birches"); __PYX_ERR(0, 1734, __pyx_L1_error) }
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_birches, __pyx_t_9) < 0)) __PYX_ERR(0, 1734, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_tuple__350 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__350)) __PYX_ERR(0, 1734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__350);
  __Pyx_GIVEREF(__pyx_tuple__350);
+1735:                     float) * self.birchLeafColor
      __pyx_t_12 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_12) {
        __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1734, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
      } else {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1734, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_12); __pyx_t_12 = NULL;
        __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
        __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, ((PyObject *)(&PyFloat_Type)));
        __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1734, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_birchLeafColor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1735, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_9 = PyNumber_Multiply(__pyx_t_14, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1735, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1736:                 vertexArray.view('uint8')[_RGB][jungle] = vertexArray.view('uint8')[_RGB][jungle].astype(
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__351, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_14 = PyObject_GetItem(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_jungle)) { __Pyx_RaiseUnboundLocalError("jungle"); __PYX_ERR(0, 1736, __pyx_L1_error) }
      __pyx_t_12 = PyObject_GetItem(__pyx_t_14, __pyx_cur_scope->__pyx_v_jungle); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_astype); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
/* … */
  __pyx_tuple__351 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__351)) __PYX_ERR(0, 1736, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__351);
  __Pyx_GIVEREF(__pyx_tuple__351);
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_tuple__352, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_12 = PyObject_GetItem(__pyx_t_9, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_jungle)) { __Pyx_RaiseUnboundLocalError("jungle"); __PYX_ERR(0, 1736, __pyx_L1_error) }
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_jungle, __pyx_t_2) < 0)) __PYX_ERR(0, 1736, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__352 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__352)) __PYX_ERR(0, 1736, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__352);
  __Pyx_GIVEREF(__pyx_tuple__352);
+1737:                     float) * self.jungleLeafColor
      __pyx_t_12 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_14);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_14, function);
        }
      }
      if (!__pyx_t_12) {
        __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_14, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1736, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
      } else {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __pyx_t_12 = NULL;
        __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
        __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject *)(&PyFloat_Type)));
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_2, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1736, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_jungleLeafColor); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_2 = PyNumber_Multiply(__pyx_t_9, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+1738:                 vertexArray.view('uint8')[_RGB][acacia] = vertexArray.view('uint8')[_RGB][acacia].astype(
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__353, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_9 = PyObject_GetItem(__pyx_t_14, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_acacia)) { __Pyx_RaiseUnboundLocalError("acacia"); __PYX_ERR(0, 1738, __pyx_L1_error) }
      __pyx_t_12 = PyObject_GetItem(__pyx_t_9, __pyx_cur_scope->__pyx_v_acacia); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_astype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
/* … */
  __pyx_tuple__353 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__353)) __PYX_ERR(0, 1738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__353);
  __Pyx_GIVEREF(__pyx_tuple__353);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__354, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_12 = PyObject_GetItem(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_acacia)) { __Pyx_RaiseUnboundLocalError("acacia"); __PYX_ERR(0, 1738, __pyx_L1_error) }
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_acacia, __pyx_t_14) < 0)) __PYX_ERR(0, 1738, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__354 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__354)) __PYX_ERR(0, 1738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__354);
  __Pyx_GIVEREF(__pyx_tuple__354);
+1739:                     float) * self.acaciaLeafColor
      __pyx_t_12 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      if (!__pyx_t_12) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_9, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1738, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1738, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL;
        __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
        __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
        PyTuple_SET_ITEM(__pyx_t_14, 0+1, ((PyObject *)(&PyFloat_Type)));
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1738, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_acaciaLeafColor); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1739, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_14 = PyNumber_Multiply(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1739, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+1740:                 vertexArray.view('uint8')[_RGB][darkoak] = vertexArray.view('uint8')[_RGB][darkoak].astype(
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__355, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_2 = PyObject_GetItem(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_darkoak)) { __Pyx_RaiseUnboundLocalError("darkoak"); __PYX_ERR(0, 1740, __pyx_L1_error) }
      __pyx_t_12 = PyObject_GetItem(__pyx_t_2, __pyx_cur_scope->__pyx_v_darkoak); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_astype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
/* … */
  __pyx_tuple__355 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__355)) __PYX_ERR(0, 1740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__355);
  __Pyx_GIVEREF(__pyx_tuple__355);
      __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__356, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_12 = PyObject_GetItem(__pyx_t_14, __pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_darkoak)) { __Pyx_RaiseUnboundLocalError("darkoak"); __PYX_ERR(0, 1740, __pyx_L1_error) }
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_darkoak, __pyx_t_9) < 0)) __PYX_ERR(0, 1740, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_tuple__356 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__356)) __PYX_ERR(0, 1740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__356);
  __Pyx_GIVEREF(__pyx_tuple__356);
+1741:                     float) * self.darkoakLeafColor
      __pyx_t_12 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_12) {
        __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1740, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
      } else {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1740, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_12); __pyx_t_12 = NULL;
        __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
        __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, ((PyObject *)(&PyFloat_Type)));
        __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1740, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_darkoakLeafColor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1741, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_9 = PyNumber_Multiply(__pyx_t_14, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1741, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1742: 
+1743:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_4);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_10;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L20_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_4);
    __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_10 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1743, __pyx_L1_error)
+1744:             append(vertexArray)
    __pyx_t_15 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 1744, __pyx_L1_error)
 1745: 
+1746:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 1746, __pyx_L1_error)
 1747: 
+1748:     leafColor = leafColorDefault = [0x48 / 255., 0xb5 / 255., 0x18 / 255.]  # 48b518
  __pyx_t_5 = PyFloat_FromDouble((72.0 / 255.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyFloat_FromDouble((181.0 / 255.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = PyFloat_FromDouble((24.0 / 255.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_12);
  __pyx_t_5 = 0;
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_leafColor, __pyx_t_7) < 0) __PYX_ERR(0, 1748, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_leafColorDefault, __pyx_t_7) < 0) __PYX_ERR(0, 1748, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+1749:     pineLeafColor = pineLeafColorDefault = [0x61 / 255., 0x99 / 255., 0x61 / 255.]  # 0x619961
  __pyx_t_7 = PyFloat_FromDouble((97.0 / 255.)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_12 = PyFloat_FromDouble((153.0 / 255.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyFloat_FromDouble((97.0 / 255.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_11);
  __pyx_t_7 = 0;
  __pyx_t_12 = 0;
  __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_pineLeafColor, __pyx_t_5) < 0) __PYX_ERR(0, 1749, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_pineLeafColorDefault, __pyx_t_5) < 0) __PYX_ERR(0, 1749, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1750:     birchLeafColor = birchLeafColorDefault = [0x80 / 255., 0xa7 / 255., 0x55 / 255.]  # 0x80a755
  __pyx_t_5 = PyFloat_FromDouble((128.0 / 255.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyFloat_FromDouble((167.0 / 255.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = PyFloat_FromDouble((85.0 / 255.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_12);
  __pyx_t_5 = 0;
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_birchLeafColor, __pyx_t_7) < 0) __PYX_ERR(0, 1750, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_birchLeafColorDefault, __pyx_t_7) < 0) __PYX_ERR(0, 1750, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+1751:     jungleLeafColor = jungleLeafColorDefault = [0x48 / 255., 0xb5 / 255., 0x18 / 255.]  # 48b518
  __pyx_t_7 = PyFloat_FromDouble((72.0 / 255.)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_12 = PyFloat_FromDouble((181.0 / 255.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyFloat_FromDouble((24.0 / 255.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_11);
  __pyx_t_7 = 0;
  __pyx_t_12 = 0;
  __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_jungleLeafColor, __pyx_t_5) < 0) __PYX_ERR(0, 1751, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_jungleLeafColorDefault, __pyx_t_5) < 0) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1752:     acaciaLeafColor = acaciaLeafColorDefault = [0x48 / 255., 0xb5 / 255., 0x18 / 255.]  # 48b518
  __pyx_t_5 = PyFloat_FromDouble((72.0 / 255.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyFloat_FromDouble((181.0 / 255.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = PyFloat_FromDouble((24.0 / 255.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_12);
  __pyx_t_5 = 0;
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_acaciaLeafColor, __pyx_t_7) < 0) __PYX_ERR(0, 1752, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_acaciaLeafColorDefault, __pyx_t_7) < 0) __PYX_ERR(0, 1752, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+1753:     darkoakLeafColor = darkoakLeafColorDefault = [0x48 / 255., 0xb5 / 255., 0x18 / 255.]  # 48b518
  __pyx_t_7 = PyFloat_FromDouble((72.0 / 255.)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_12 = PyFloat_FromDouble((181.0 / 255.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyFloat_FromDouble((24.0 / 255.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_11);
  __pyx_t_7 = 0;
  __pyx_t_12 = 0;
  __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_darkoakLeafColor, __pyx_t_5) < 0) __PYX_ERR(0, 1753, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_darkoakLeafColorDefault, __pyx_t_5) < 0) __PYX_ERR(0, 1753, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 1754: 
+1755:     makeVertices = makeLeafVertices
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeLeafVertices);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeLeafVertices);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_5) < 0) __PYX_ERR(0, 1755, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 1756: 
 1757: 
+1758: class PlantBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_PlantBlockRenderer, __pyx_n_s_PlantBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PlantBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PlantBlockRenderer, __pyx_t_5) < 0) __PYX_ERR(0, 1758, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1759:     @classmethod
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_11) < 0) __PYX_ERR(0, 1760, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+1760:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18PlantBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18PlantBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_18PlantBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18PlantBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 1760, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 1760, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1760, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.PlantBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18PlantBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18PlantBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_blocktypes = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.PlantBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_blocktypes);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_18PlantBlockRenderer_4generator16(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__729 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_blocktypes, __pyx_n_s_b); if (unlikely(!__pyx_tuple__729)) __PYX_ERR(0, 1760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__729);
  __Pyx_GIVEREF(__pyx_tuple__729);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18PlantBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_PlantBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__730)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_codeobj__730 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__729, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 1760, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__730)) __PYX_ERR(0, 1760, __pyx_L1_error)
 1761:         # blocktypes = [6, 37, 38, 39, 40, 59, 83]
 1762:         # if mats.name != "Classic": blocktypes += [31, 32]  # shrubs, tall grass
 1763:         # if mats.name == "Alpha": blocktypes += [115]  # nether wart
+1764:         blocktypes = [b.ID for b in mats if b.type in ("DECORATION_CROSS", "NETHER_WART", "CROPS", "STEM")]
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_mats)) || PyTuple_CheckExact(__pyx_v_mats)) {
    __pyx_t_2 = __pyx_v_mats; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_mats); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1764, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1764, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1764, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1764, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1764, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1764, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_DECORATION_CROSS, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1764, __pyx_L1_error)
    if (!__pyx_t_7) {
    } else {
      __pyx_t_6 = __pyx_t_7;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_NETHER_WART, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1764, __pyx_L1_error)
    if (!__pyx_t_7) {
    } else {
      __pyx_t_6 = __pyx_t_7;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_CROPS, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1764, __pyx_L1_error)
    if (!__pyx_t_7) {
    } else {
      __pyx_t_6 = __pyx_t_7;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_STEM, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1764, __pyx_L1_error)
    __pyx_t_6 = __pyx_t_7;
    __pyx_L6_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = (__pyx_t_6 != 0);
    if (__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_ID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1764, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1764, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_blocktypes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 1765: 
+1766:         return blocktypes
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_blocktypes);
  __pyx_r = __pyx_v_blocktypes;
  goto __pyx_L0;
 1767: 
+1768:     renderstate = ChunkCalculator.renderstateAlphaTest
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_renderstateAlphaTest); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_5) < 0) __PYX_ERR(0, 1768, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 1769: 
+1770:     def makePlantVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18PlantBlockRenderer_3makePlantVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18PlantBlockRenderer_3makePlantVertices = {"makePlantVertices", (PyCFunction)__pyx_pw_9_renderer_18PlantBlockRenderer_3makePlantVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18PlantBlockRenderer_3makePlantVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makePlantVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlantVertices", 1, 7, 7, 1); __PYX_ERR(0, 1770, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlantVertices", 1, 7, 7, 2); __PYX_ERR(0, 1770, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlantVertices", 1, 7, 7, 3); __PYX_ERR(0, 1770, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlantVertices", 1, 7, 7, 4); __PYX_ERR(0, 1770, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlantVertices", 1, 7, 7, 5); __PYX_ERR(0, 1770, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlantVertices", 1, 7, 7, 6); __PYX_ERR(0, 1770, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makePlantVertices") < 0)) __PYX_ERR(0, 1770, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makePlantVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1770, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.PlantBlockRenderer.makePlantVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18PlantBlockRenderer_2makePlantVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18PlantBlockRenderer_2makePlantVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_23_makePlantVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makePlantVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_23_makePlantVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_23_makePlantVertices(__pyx_ptype_9_renderer___pyx_scope_struct_23_makePlantVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_18PlantBlockRenderer_4generator16, (PyObject *) __pyx_cur_scope, __pyx_n_s_makePlantVertices, __pyx_n_s_PlantBlockRenderer_makePlantVert, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1770, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.PlantBlockRenderer.makePlantVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_18PlantBlockRenderer_4generator16(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1770, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("makePlantVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__731 = PyTuple_Pack(19, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_blockIndices, __pyx_n_s_theseBlocks, __pyx_n_s_bdata, __pyx_n_s_texes, __pyx_n_s_blockLight, __pyx_n_s_lights, __pyx_n_s_colorize, __pyx_n_s_colorize2, __pyx_n_s_direction, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__731)) __PYX_ERR(0, 1770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__731);
  __Pyx_GIVEREF(__pyx_tuple__731);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18PlantBlockRenderer_3makePlantVertices, 0, __pyx_n_s_PlantBlockRenderer_makePlantVert, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__732)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makePlantVertices, __pyx_t_5) < 0) __PYX_ERR(0, 1770, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_codeobj__732 = (PyObject*)__Pyx_PyCode_New(7, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__731, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makePlantVertices, 1770, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__732)) __PYX_ERR(0, 1770, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_23_makePlantVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_bdata;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockLight;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_colorize;
  PyObject *__pyx_v_colorize2;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_texes;
  PyObject *__pyx_v_theseBlocks;
  PyObject *__pyx_v_vertexArray;
  Py_ssize_t __pyx_t_0;
  PyObject *__pyx_t_1;
};

+1771:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1772:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+1773:         blockIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1773, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1773, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1773, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blockIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+1774:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1774, __pyx_L1_error)
 1775: 
+1776:         theseBlocks = blocks[blockIndices]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_theseBlocks = __pyx_t_1;
  __pyx_t_1 = 0;
 1777: 
+1778:         bdata = blockData[blockIndices]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1778, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_bdata = __pyx_t_1;
  __pyx_t_1 = 0;
+1779:         texes = texMap(blocks[blockIndices], bdata, 0)
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __pyx_t_4 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_bdata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_bdata);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_bdata);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_int_0);
  __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_texes = __pyx_t_1;
  __pyx_t_1 = 0;
 1780: 
+1781:         blockLight = areaBlockLights[1:-1, 1:-1, 1:-1]
  __pyx_slice__357 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__357)) __PYX_ERR(0, 1781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__357);
  __Pyx_GIVEREF(__pyx_slice__357);
  __pyx_slice__358 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__358)) __PYX_ERR(0, 1781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__358);
  __Pyx_GIVEREF(__pyx_slice__358);
  __pyx_slice__359 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__359)) __PYX_ERR(0, 1781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__359);
  __Pyx_GIVEREF(__pyx_slice__359);
/* … */
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_tuple__360); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blockLight = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_tuple__360 = PyTuple_Pack(3, __pyx_slice__357, __pyx_slice__358, __pyx_slice__359); if (unlikely(!__pyx_tuple__360)) __PYX_ERR(0, 1781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__360);
  __Pyx_GIVEREF(__pyx_tuple__360);
+1782:         lights = blockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2);
  __pyx_t_6 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_lights = __pyx_t_2;
  __pyx_t_2 = 0;
 1783: 
+1784:         colorize = None
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_cur_scope->__pyx_v_colorize = Py_None;
+1785:         if self.materials.name != "Classic":  # so hacky, someone more competent fix this
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_materials); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_Classic, Py_NE)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1785, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_7) {
/* … */
  }
+1786:             colorize = (theseBlocks == alphaMaterials.TallGrass.ID) & (bdata != 0)
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_TallGrass); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_theseBlocks, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1786, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_bdata, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1786, __pyx_L1_error)
    __pyx_t_1 = PyNumber_And(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_colorize);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_colorize, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
+1787:             colorize2 = (theseBlocks == alphaMaterials.TallFlowers.ID) & (bdata != 0) & (
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_TallFlowers); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_theseBlocks, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1787, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_bdata, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1787, __pyx_L1_error)
    __pyx_t_2 = PyNumber_And(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
    __pyx_t_4 = PyNumber_And(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1788:                 bdata != 1) & (bdata != 4) & (bdata != 5)
    __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_bdata, __pyx_int_1, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1788, __pyx_L1_error)
/* … */
    __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_bdata, __pyx_int_4, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1788, __pyx_L1_error)
    __pyx_t_2 = PyNumber_And(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1788, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_bdata, __pyx_int_5, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1788, __pyx_L1_error)
    __pyx_t_4 = PyNumber_And(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1788, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_cur_scope->__pyx_v_colorize2 = __pyx_t_4;
    __pyx_t_4 = 0;
 1789: 
+1790:         for direction in (
  __pyx_t_6 = __pyx_t_3; __Pyx_INCREF(__pyx_t_6); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (__pyx_t_5 >= 4) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1790, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1790, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1791:                 pymclevel.faces.FaceXIncreasing, pymclevel.faces.FaceXDecreasing, pymclevel.faces.FaceZIncreasing,
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_6);
  __pyx_t_4 = 0;
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_6 = 0;
+1792:                 pymclevel.faces.FaceZDecreasing):
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1793:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1793, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1793, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1793, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+1794:             if not len(vertexArray):
    __pyx_t_8 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 1794, __pyx_L1_error)
    __pyx_t_7 = ((!(__pyx_t_8 != 0)) != 0);
    if (__pyx_t_7) {
/* … */
    }
+1795:                 return
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L0;
 1796: 
+1797:             if direction == pymclevel.faces.FaceXIncreasing:
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1797, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1797, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_7) {
/* … */
    }
+1798:                 vertexArray[_XYZ][..., 1:3, 0] -= 1
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1798, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1798, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__361 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__361)) __PYX_ERR(0, 1798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__361);
  __Pyx_GIVEREF(__pyx_slice__361);
      __Pyx_INCREF(__pyx_tuple__362);
      __pyx_t_9 = __pyx_tuple__362;
      __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1798, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_t_2, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1798, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_9, __pyx_t_4) < 0)) __PYX_ERR(0, 1798, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__362 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__361, __pyx_int_0); if (unlikely(!__pyx_tuple__362)) __PYX_ERR(0, 1798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__362);
  __Pyx_GIVEREF(__pyx_tuple__362);
+1799:             if direction == pymclevel.faces.FaceXDecreasing:
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1799, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1799, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1799, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1799, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1799, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_7) {
/* … */
    }
+1800:                 vertexArray[_XYZ][..., 1:3, 0] += 1
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1800, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1800, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__363 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__363)) __PYX_ERR(0, 1800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__363);
  __Pyx_GIVEREF(__pyx_slice__363);
      __Pyx_INCREF(__pyx_tuple__364);
      __pyx_t_9 = __pyx_tuple__364;
      __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1800, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1800, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_9, __pyx_t_2) < 0)) __PYX_ERR(0, 1800, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__364 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__363, __pyx_int_0); if (unlikely(!__pyx_tuple__364)) __PYX_ERR(0, 1800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__364);
  __Pyx_GIVEREF(__pyx_tuple__364);
+1801:             if direction == pymclevel.faces.FaceZIncreasing:
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1801, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1801, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_7) {
/* … */
    }
+1802:                 vertexArray[_XYZ][..., 1:3, 2] -= 1
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__365 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__365)) __PYX_ERR(0, 1802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__365);
  __Pyx_GIVEREF(__pyx_slice__365);
      __Pyx_INCREF(__pyx_tuple__366);
      __pyx_t_9 = __pyx_tuple__366;
      __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_t_2, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_9, __pyx_t_4) < 0)) __PYX_ERR(0, 1802, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__366 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__365, __pyx_int_2); if (unlikely(!__pyx_tuple__366)) __PYX_ERR(0, 1802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__366);
  __Pyx_GIVEREF(__pyx_tuple__366);
+1803:             if direction == pymclevel.faces.FaceZDecreasing:
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1803, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1803, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1803, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1803, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1803, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_7) {
/* … */
    }
+1804:                 vertexArray[_XYZ][..., 1:3, 2] += 1
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__367 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__367)) __PYX_ERR(0, 1804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__367);
  __Pyx_GIVEREF(__pyx_slice__367);
      __Pyx_INCREF(__pyx_tuple__368);
      __pyx_t_9 = __pyx_tuple__368;
      __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_9, __pyx_t_2) < 0)) __PYX_ERR(0, 1804, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__368 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__367, __pyx_int_2); if (unlikely(!__pyx_tuple__368)) __PYX_ERR(0, 1804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__368);
  __Pyx_GIVEREF(__pyx_tuple__368);
 1805: 
+1806:             vertexArray[_ST] += texes[:, numpy.newaxis, 0:2]
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__369 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__369)) __PYX_ERR(0, 1806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__369);
  __Pyx_GIVEREF(__pyx_slice__369);
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_slice__369);
    __Pyx_GIVEREF(__pyx_slice__369);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_slice__369);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __Pyx_INCREF(__pyx_slice__370);
    __Pyx_GIVEREF(__pyx_slice__370);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_slice__370);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_texes, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3, __pyx_t_4) < 0)) __PYX_ERR(0, 1806, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_slice__370 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__370)) __PYX_ERR(0, 1806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__370);
  __Pyx_GIVEREF(__pyx_slice__370);
 1807: 
+1808:             vertexArray.view('uint8')[_RGB] = 0xf  # ignore precomputed directional light
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1808, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__371, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1808, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1808, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_3, __pyx_int_15) < 0)) __PYX_ERR(0, 1808, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__371 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__371)) __PYX_ERR(0, 1808, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__371);
  __Pyx_GIVEREF(__pyx_tuple__371);
+1809:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__372, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1809, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__372 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__372)) __PYX_ERR(0, 1809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__372);
  __Pyx_GIVEREF(__pyx_tuple__372);
+1810:             if colorize is not None:
    __pyx_t_7 = (__pyx_cur_scope->__pyx_v_colorize != Py_None);
    __pyx_t_10 = (__pyx_t_7 != 0);
    if (__pyx_t_10) {
/* … */
    }
+1811:                 vertexArray.view('uint8')[_RGB][colorize] = vertexArray.view('uint8')[_RGB][colorize].astype(
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__373, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_colorize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
/* … */
  __pyx_tuple__373 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__373)) __PYX_ERR(0, 1811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__373);
  __Pyx_GIVEREF(__pyx_tuple__373);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__374, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_colorize, __pyx_t_1) < 0)) __PYX_ERR(0, 1811, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__374 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__374)) __PYX_ERR(0, 1811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__374);
  __Pyx_GIVEREF(__pyx_tuple__374);
+1812:                     float) * LeafBlockRenderer.leafColor
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1811, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      } else {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1811, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
        __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject *)(&PyFloat_Type)));
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1811, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_LeafBlockRenderer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1812, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_leafColor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1812, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_Multiply(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1812, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1813:                 vertexArray.view('uint8')[_RGB][colorize2] = vertexArray.view('uint8')[_RGB][colorize2].astype(
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__375, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_colorize2)) { __Pyx_RaiseUnboundLocalError("colorize2"); __PYX_ERR(0, 1813, __pyx_L1_error) }
      __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_colorize2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
/* … */
  __pyx_tuple__375 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__375)) __PYX_ERR(0, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__375);
  __Pyx_GIVEREF(__pyx_tuple__375);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__376, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_colorize2)) { __Pyx_RaiseUnboundLocalError("colorize2"); __PYX_ERR(0, 1813, __pyx_L1_error) }
      if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_colorize2, __pyx_t_4) < 0)) __PYX_ERR(0, 1813, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__376 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__376)) __PYX_ERR(0, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__376);
  __Pyx_GIVEREF(__pyx_tuple__376);
+1814:                     float) * LeafBlockRenderer.leafColor
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1813, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1813, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
        __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject *)(&PyFloat_Type)));
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1813, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_LeafBlockRenderer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1814, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_leafColor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1814, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1814, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1815:             append(vertexArray)
    __pyx_t_11 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1815, __pyx_L1_error)
+1816:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_5;
    __Pyx_XGIVEREF(__pyx_t_6);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L14_resume_from_yield:;
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_0;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_6);
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1816, __pyx_L1_error)
 1817: 
+1818:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 1818, __pyx_L1_error)
 1819: 
+1820:     makeVertices = makePlantVertices
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makePlantVertices);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_makePlantVertices);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1820, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_5) < 0) __PYX_ERR(0, 1820, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 1821: 
 1822: 
+1823: class TorchBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_TorchBlockRenderer, __pyx_n_s_TorchBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_TorchBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TorchBlockRenderer, __pyx_t_7) < 0) __PYX_ERR(0, 1823, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1824:     @classmethod
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1824, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_11) < 0) __PYX_ERR(0, 1825, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+1825:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18TorchBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18TorchBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_18TorchBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18TorchBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 1825, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 1825, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1825, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.TorchBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18TorchBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18TorchBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_block = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.TorchBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_block);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_18TorchBlockRenderer_4generator17(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__733 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_block); if (unlikely(!__pyx_tuple__733)) __PYX_ERR(0, 1825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__733);
  __Pyx_GIVEREF(__pyx_tuple__733);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18TorchBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_TorchBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__734)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_codeobj__734 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__733, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 1825, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__734)) __PYX_ERR(0, 1825, __pyx_L1_error)
+1826:         return [block.ID for block in mats.blocksByType["TORCH"]]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_TORCH); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1826, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1826, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1826, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1826, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1826, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1826, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 1826, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_block, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_block, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1826, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1826, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 1827: 
+1828:     renderstate = ChunkCalculator.renderstateAlphaTest
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_renderstateAlphaTest); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_5) < 0) __PYX_ERR(0, 1828, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1829:     torchOffsetsStraight = [
  __pyx_t_14 = PyList_New(6); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1829, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_14, 3, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_14, 4, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_14, 5, __pyx_t_4);
  __pyx_t_5 = 0;
  __pyx_t_8 = 0;
  __pyx_t_10 = 0;
  __pyx_t_13 = 0;
  __pyx_t_12 = 0;
  __pyx_t_4 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_torchOffsetsStraight, __pyx_t_14) < 0) __PYX_ERR(0, 1829, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+1830:         [  # FaceXIncreasing
  __pyx_t_5 = PyList_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_8);
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
  __pyx_t_7 = 0;
  __pyx_t_8 = 0;
+1831:             (-7 / 16., 0, 0),
  __pyx_t_5 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_int_0);
  __pyx_t_5 = 0;
+1832:             (-7 / 16., 0, 0),
  __pyx_t_5 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_int_0);
  __pyx_t_5 = 0;
+1833:             (-7 / 16., 0, 0),
  __pyx_t_5 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_0);
  __pyx_t_5 = 0;
+1834:             (-7 / 16., 0, 0),
  __pyx_t_5 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1834, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1834, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_0);
  __pyx_t_5 = 0;
 1835:         ],
+1836:         [  # FaceXDecreasing
  __pyx_t_8 = PyList_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1836, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_8, 3, __pyx_t_10);
  __pyx_t_7 = 0;
  __pyx_t_12 = 0;
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
+1837:             (7 / 16., 0, 0),
  __pyx_t_8 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1837, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1837, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_0);
  __pyx_t_8 = 0;
+1838:             (7 / 16., 0, 0),
  __pyx_t_8 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1838, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1838, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_int_0);
  __pyx_t_8 = 0;
+1839:             (7 / 16., 0, 0),
  __pyx_t_8 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_int_0);
  __pyx_t_8 = 0;
+1840:             (7 / 16., 0, 0),
  __pyx_t_8 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1840, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1840, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_int_0);
  __pyx_t_8 = 0;
 1841:         ],
+1842:         [  # FaceYIncreasing
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1842, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_10, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_10, 3, __pyx_t_13);
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
  __pyx_t_13 = 0;
+1843:             (7 / 16., -6 / 16., 7 / 16.),
  __pyx_t_10 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyFloat_FromDouble((-6.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_12);
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
+1844:             (7 / 16., -6 / 16., -7 / 16.),
  __pyx_t_12 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyFloat_FromDouble((-6.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_10);
  __pyx_t_12 = 0;
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
+1845:             (-7 / 16., -6 / 16., -7 / 16.),
  __pyx_t_10 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyFloat_FromDouble((-6.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_12);
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
+1846:             (-7 / 16., -6 / 16., 7 / 16.),
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyFloat_FromDouble((-6.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_10);
  __pyx_t_12 = 0;
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
 1847:         ],
+1848:         [  # FaceYDecreasing
  __pyx_t_13 = PyList_New(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_13, 2, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_13, 3, __pyx_t_12);
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
+1849:             (7 / 16., 0., 7 / 16.),
  __pyx_t_13 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_4 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_13);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_13);
  __Pyx_INCREF(__pyx_float_0_);
  __Pyx_GIVEREF(__pyx_float_0_);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_float_0_);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
  __pyx_t_13 = 0;
  __pyx_t_4 = 0;
+1850:             (-7 / 16., 0., 7 / 16.),
  __pyx_t_4 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_13 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_INCREF(__pyx_float_0_);
  __Pyx_GIVEREF(__pyx_float_0_);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_float_0_);
  __Pyx_GIVEREF(__pyx_t_13);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_13);
  __pyx_t_4 = 0;
  __pyx_t_13 = 0;
+1851:             (-7 / 16., 0., -7 / 16.),
  __pyx_t_13 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_4 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_13);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13);
  __Pyx_INCREF(__pyx_float_0_);
  __Pyx_GIVEREF(__pyx_float_0_);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_float_0_);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_4);
  __pyx_t_13 = 0;
  __pyx_t_4 = 0;
+1852:             (7 / 16., 0., -7 / 16.),
  __pyx_t_4 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_13 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
  __Pyx_INCREF(__pyx_float_0_);
  __Pyx_GIVEREF(__pyx_float_0_);
  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_float_0_);
  __Pyx_GIVEREF(__pyx_t_13);
  PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_13);
  __pyx_t_4 = 0;
  __pyx_t_13 = 0;
 1853:         ],
 1854: 
+1855:         [  # FaceZIncreasing
  __pyx_t_12 = PyList_New(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_12, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_12, 3, __pyx_t_4);
  __pyx_t_11 = 0;
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
+1856:             (0, 0, -7 / 16.),
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_12);
  __pyx_t_12 = 0;
+1857:             (0, 0, -7 / 16.),
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_12);
  __pyx_t_12 = 0;
+1858:             (0, 0, -7 / 16.),
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1858, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1858, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_12);
  __pyx_t_12 = 0;
+1859:             (0, 0, -7 / 16.)
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_12);
  __pyx_t_12 = 0;
 1860:         ],
+1861:         [  # FaceZDecreasing
  __pyx_t_4 = PyList_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1861, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_14);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_t_14);
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
  __pyx_t_11 = 0;
  __pyx_t_14 = 0;
+1862:             (0, 0, 7 / 16.),
  __pyx_t_4 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
  __pyx_t_4 = 0;
+1863:             (0, 0, 7 / 16.),
  __pyx_t_4 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_4);
  __pyx_t_4 = 0;
+1864:             (0, 0, 7 / 16.),
  __pyx_t_4 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_4);
  __pyx_t_4 = 0;
+1865:             (0, 0, 7 / 16.)
  __pyx_t_4 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_4);
  __pyx_t_4 = 0;
 1866:         ],
 1867: 
 1868:     ]
 1869: 
+1870:     torchOffsetsSouth = [
  __pyx_t_15 = PyList_New(6); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_14);
  PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_15, 1, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_15, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_15, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_15, 4, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_15, 5, __pyx_t_10);
  __pyx_t_14 = 0;
  __pyx_t_8 = 0;
  __pyx_t_5 = 0;
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
  __pyx_t_10 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_torchOffsetsSouth, __pyx_t_15) < 0) __PYX_ERR(0, 1870, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+1871:         [  # FaceXIncreasing
  __pyx_t_14 = PyList_New(4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_14, 3, __pyx_t_8);
  __pyx_t_12 = 0;
  __pyx_t_13 = 0;
  __pyx_t_10 = 0;
  __pyx_t_8 = 0;
+1872:             (-7 / 16., 3 / 16., 0),
  __pyx_t_14 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_4 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_14);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_4);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_int_0);
  __pyx_t_14 = 0;
  __pyx_t_4 = 0;
+1873:             (-7 / 16., 3 / 16., 0),
  __pyx_t_4 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1873, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_14 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1873, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1873, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_14);
  PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_14);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_int_0);
  __pyx_t_4 = 0;
  __pyx_t_14 = 0;
+1874:             (-7 / 16., 3 / 16., 0),
  __pyx_t_14 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_4 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_14);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_int_0);
  __pyx_t_14 = 0;
  __pyx_t_4 = 0;
+1875:             (-7 / 16., 3 / 16., 0),
  __pyx_t_4 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_14 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_14);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_14);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_0);
  __pyx_t_4 = 0;
  __pyx_t_14 = 0;
 1876:         ],
+1877:         [  # FaceXDecreasing
  __pyx_t_8 = PyList_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_8, 3, __pyx_t_5);
  __pyx_t_13 = 0;
  __pyx_t_12 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
+1878:             (7 / 16., 3 / 16., 0),
  __pyx_t_8 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_10);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_int_0);
  __pyx_t_8 = 0;
  __pyx_t_10 = 0;
+1879:             (7 / 16., 3 / 16., 0),
  __pyx_t_10 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_8 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_int_0);
  __pyx_t_10 = 0;
  __pyx_t_8 = 0;
+1880:             (7 / 16., 3 / 16., 0),
  __pyx_t_8 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_10);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_0);
  __pyx_t_8 = 0;
  __pyx_t_10 = 0;
+1881:             (7 / 16., 3 / 16., 0),
  __pyx_t_10 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_8 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_int_0);
  __pyx_t_10 = 0;
  __pyx_t_8 = 0;
 1882:         ],
+1883:         [  # FaceYIncreasing
  __pyx_t_5 = PyList_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_7);
  __pyx_t_13 = 0;
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
  __pyx_t_7 = 0;
+1884:             (7 / 16., -3 / 16., 7 / 16.),
  __pyx_t_5 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyFloat_FromDouble((-3.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_12 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_12);
  __pyx_t_5 = 0;
  __pyx_t_4 = 0;
  __pyx_t_12 = 0;
+1885:             (7 / 16., -3 / 16., -7 / 16.),
  __pyx_t_12 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_4 = PyFloat_FromDouble((-3.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_5);
  __pyx_t_12 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
+1886:             (-7 / 16., -3 / 16., -7 / 16.),
  __pyx_t_5 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyFloat_FromDouble((-3.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_12);
  __pyx_t_5 = 0;
  __pyx_t_4 = 0;
  __pyx_t_12 = 0;
+1887:             (-7 / 16., -3 / 16., 7 / 16.),
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_4 = PyFloat_FromDouble((-3.0 / 16.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_5);
  __pyx_t_12 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
 1888:         ],
+1889:         [  # FaceYDecreasing
  __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
  __pyx_t_13 = 0;
  __pyx_t_4 = 0;
  __pyx_t_12 = 0;
  __pyx_t_6 = 0;
+1890:             (7 / 16., 3 / 16., 7 / 16.),
  __pyx_t_7 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_11 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_10);
  __pyx_t_7 = 0;
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
+1891:             (-7 / 16., 3 / 16., 7 / 16.),
  __pyx_t_10 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_7 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_7);
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
  __pyx_t_7 = 0;
+1892:             (-7 / 16., 3 / 16., -7 / 16.),
  __pyx_t_7 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_11 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_10);
  __pyx_t_7 = 0;
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
+1893:             (7 / 16., 3 / 16., -7 / 16.),
  __pyx_t_10 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_7 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_7);
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
  __pyx_t_7 = 0;
 1894:         ],
 1895: 
+1896:         [  # FaceZIncreasing
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_10);
  __pyx_t_4 = 0;
  __pyx_t_13 = 0;
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
+1897:             (0, 3 / 16., -7 / 16.),
  __pyx_t_6 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_12);
  __pyx_t_6 = 0;
  __pyx_t_12 = 0;
+1898:             (0, 3 / 16., -7 / 16.),
  __pyx_t_12 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_6 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_6);
  __pyx_t_12 = 0;
  __pyx_t_6 = 0;
+1899:             (0, 3 / 16., -7 / 16.),
  __pyx_t_6 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_12 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_12);
  __pyx_t_6 = 0;
  __pyx_t_12 = 0;
+1900:             (0, 3 / 16., -7 / 16.)
  __pyx_t_12 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1900, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_6 = PyFloat_FromDouble((-7.0 / 16.)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1900, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1900, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_6);
  __pyx_t_12 = 0;
  __pyx_t_6 = 0;
 1901:         ],
+1902:         [  # FaceZDecreasing
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1902, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_10, 2, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_10, 3, __pyx_t_15);
  __pyx_t_13 = 0;
  __pyx_t_4 = 0;
  __pyx_t_12 = 0;
  __pyx_t_15 = 0;
+1903:             (0, 3 / 16., 7 / 16.),
  __pyx_t_10 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_11);
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
+1904:             (0, 3 / 16., 7 / 16.),
  __pyx_t_11 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_10);
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
+1905:             (0, 3 / 16., 7 / 16.),
  __pyx_t_10 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_11);
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
+1906:             (0, 3 / 16., 7 / 16.),
  __pyx_t_11 = PyFloat_FromDouble((3.0 / 16.)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyFloat_FromDouble((7.0 / 16.)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_10);
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
 1907:         ],
 1908: 
 1909:     ]
+1910:     torchOffsetsNorth = torchOffsetsWest = torchOffsetsEast = torchOffsetsSouth
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsetsSouth);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsetsSouth);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_torchOffsetsNorth, __pyx_t_15) < 0) __PYX_ERR(0, 1910, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_torchOffsetsWest, __pyx_t_15) < 0) __PYX_ERR(0, 1910, __pyx_L1_error)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_torchOffsetsEast, __pyx_t_15) < 0) __PYX_ERR(0, 1910, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
 1911: 
+1912:     torchOffsets = [
  __pyx_t_14 = PyList_New(6); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_14, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_14, 4, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_14, 5, __pyx_t_8);
  __pyx_t_15 = 0;
  __pyx_t_10 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_8 = 0;
+1913:                        torchOffsetsStraight,
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsetsStraight);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsetsStraight);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
+1914:                        torchOffsetsSouth,
  __pyx_t_10 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsetsSouth);
  if (unlikely(!__pyx_t_10)) {
    PyErr_Clear();
    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsetsSouth);
  }
  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
+1915:                        torchOffsetsNorth,
  __pyx_t_6 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsetsNorth);
  if (unlikely(!__pyx_t_6)) {
    PyErr_Clear();
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsetsNorth);
  }
  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
+1916:                        torchOffsetsWest,
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsetsWest);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsetsWest);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
+1917:                        torchOffsetsEast,
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsetsEast);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsetsEast);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
+1918:                        torchOffsetsStraight,
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsetsStraight);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsetsStraight);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1918, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
+1919:                    ] + [torchOffsetsStraight] * 10
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsetsStraight);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsetsStraight);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = PyList_New(1 * 10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 10; __pyx_temp++) {
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      PyList_SET_ITEM(__pyx_t_5, __pyx_temp, __pyx_t_8);
    }
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyNumber_Add(__pyx_t_14, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_torchOffsets, __pyx_t_8) < 0) __PYX_ERR(0, 1912, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 1920: 
+1921:     torchOffsets = numpy.array(torchOffsets, dtype='float32')
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 1921, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_14, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_torchOffsets, __pyx_t_7) < 0) __PYX_ERR(0, 1921, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 1922: 
+1923:     torchOffsets[1][..., 3, :, 0] -= 0.5
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__735 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__735)) __PYX_ERR(0, 1923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__735);
  __Pyx_GIVEREF(__pyx_slice__735);
  __Pyx_INCREF(__pyx_tuple__736);
  __pyx_t_16 = __pyx_tuple__736;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_14 = __Pyx_PyFloat_SubtractObjC(__pyx_t_7, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_16, __pyx_t_14) < 0)) __PYX_ERR(0, 1923, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__736 = PyTuple_Pack(4, Py_Ellipsis, __pyx_int_3, __pyx_slice__735, __pyx_int_0); if (unlikely(!__pyx_tuple__736)) __PYX_ERR(0, 1923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__736);
  __Pyx_GIVEREF(__pyx_tuple__736);
 1924: 
+1925:     torchOffsets[1][..., 0:2, 0:2, 0] -= 0.5
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_8, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__737 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__737)) __PYX_ERR(0, 1925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__737);
  __Pyx_GIVEREF(__pyx_slice__737);
  __pyx_slice__738 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__738)) __PYX_ERR(0, 1925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__738);
  __Pyx_GIVEREF(__pyx_slice__738);
  __Pyx_INCREF(__pyx_tuple__739);
  __pyx_t_16 = __pyx_tuple__739;
  __pyx_t_8 = PyObject_GetItem(__pyx_t_14, __pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_t_16, __pyx_t_7) < 0)) __PYX_ERR(0, 1925, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__739 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__737, __pyx_slice__738, __pyx_int_0); if (unlikely(!__pyx_tuple__739)) __PYX_ERR(0, 1925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__739);
  __Pyx_GIVEREF(__pyx_tuple__739);
+1926:     torchOffsets[1][..., 4:6, 0:2, 0] -= 0.5
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_14, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_slice__740 = PySlice_New(__pyx_int_4, __pyx_int_6, Py_None); if (unlikely(!__pyx_slice__740)) __PYX_ERR(0, 1926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__740);
  __Pyx_GIVEREF(__pyx_slice__740);
  __pyx_slice__741 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__741)) __PYX_ERR(0, 1926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__741);
  __Pyx_GIVEREF(__pyx_slice__741);
  __Pyx_INCREF(__pyx_tuple__742);
  __pyx_t_16 = __pyx_tuple__742;
  __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_14, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_16, __pyx_t_8) < 0)) __PYX_ERR(0, 1926, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__742 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__740, __pyx_slice__741, __pyx_int_0); if (unlikely(!__pyx_tuple__742)) __PYX_ERR(0, 1926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__742);
  __Pyx_GIVEREF(__pyx_tuple__742);
+1927:     torchOffsets[1][..., 0:2, 2:4, 0] -= 0.1
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__743 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__743)) __PYX_ERR(0, 1927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__743);
  __Pyx_GIVEREF(__pyx_slice__743);
  __pyx_slice__744 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__744)) __PYX_ERR(0, 1927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__744);
  __Pyx_GIVEREF(__pyx_slice__744);
  __Pyx_INCREF(__pyx_tuple__745);
  __pyx_t_16 = __pyx_tuple__745;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_14 = __Pyx_PyFloat_SubtractObjC(__pyx_t_7, __pyx_float_0_1, 0.1, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_16, __pyx_t_14) < 0)) __PYX_ERR(0, 1927, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__745 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__743, __pyx_slice__744, __pyx_int_0); if (unlikely(!__pyx_tuple__745)) __PYX_ERR(0, 1927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__745);
  __Pyx_GIVEREF(__pyx_tuple__745);
+1928:     torchOffsets[1][..., 4:6, 2:4, 0] -= 0.1
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_8, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__746 = PySlice_New(__pyx_int_4, __pyx_int_6, Py_None); if (unlikely(!__pyx_slice__746)) __PYX_ERR(0, 1928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__746);
  __Pyx_GIVEREF(__pyx_slice__746);
  __pyx_slice__747 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__747)) __PYX_ERR(0, 1928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__747);
  __Pyx_GIVEREF(__pyx_slice__747);
  __Pyx_INCREF(__pyx_tuple__748);
  __pyx_t_16 = __pyx_tuple__748;
  __pyx_t_8 = PyObject_GetItem(__pyx_t_14, __pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_1, 0.1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_t_16, __pyx_t_7) < 0)) __PYX_ERR(0, 1928, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__748 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__746, __pyx_slice__747, __pyx_int_0); if (unlikely(!__pyx_tuple__748)) __PYX_ERR(0, 1928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__748);
  __Pyx_GIVEREF(__pyx_tuple__748);
 1929: 
+1930:     torchOffsets[1][..., 2, :, 0] -= 0.25
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_14, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_slice__749 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__749)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__749);
  __Pyx_GIVEREF(__pyx_slice__749);
  __Pyx_INCREF(__pyx_tuple__750);
  __pyx_t_16 = __pyx_tuple__750;
  __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_14, __pyx_float_0_25, 0.25, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_16, __pyx_t_8) < 0)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__750 = PyTuple_Pack(4, Py_Ellipsis, __pyx_int_2, __pyx_slice__749, __pyx_int_0); if (unlikely(!__pyx_tuple__750)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__750);
  __Pyx_GIVEREF(__pyx_tuple__750);
 1931: 
+1932:     torchOffsets[2][..., 3, :, 0] += 0.5
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__751 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__751)) __PYX_ERR(0, 1932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__751);
  __Pyx_GIVEREF(__pyx_slice__751);
  __Pyx_INCREF(__pyx_tuple__752);
  __pyx_t_16 = __pyx_tuple__752;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_14 = __Pyx_PyFloat_AddObjC(__pyx_t_7, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_16, __pyx_t_14) < 0)) __PYX_ERR(0, 1932, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__752 = PyTuple_Pack(4, Py_Ellipsis, __pyx_int_3, __pyx_slice__751, __pyx_int_0); if (unlikely(!__pyx_tuple__752)) __PYX_ERR(0, 1932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__752);
  __Pyx_GIVEREF(__pyx_tuple__752);
+1933:     torchOffsets[2][..., 0:2, 0:2, 0] += 0.5
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_8, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__753 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__753)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__753);
  __Pyx_GIVEREF(__pyx_slice__753);
  __pyx_slice__754 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__754)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__754);
  __Pyx_GIVEREF(__pyx_slice__754);
  __Pyx_INCREF(__pyx_tuple__755);
  __pyx_t_16 = __pyx_tuple__755;
  __pyx_t_8 = PyObject_GetItem(__pyx_t_14, __pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyFloat_AddObjC(__pyx_t_8, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_t_16, __pyx_t_7) < 0)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__755 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__753, __pyx_slice__754, __pyx_int_0); if (unlikely(!__pyx_tuple__755)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__755);
  __Pyx_GIVEREF(__pyx_tuple__755);
+1934:     torchOffsets[2][..., 4:6, 0:2, 0] += 0.5
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_14, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_slice__756 = PySlice_New(__pyx_int_4, __pyx_int_6, Py_None); if (unlikely(!__pyx_slice__756)) __PYX_ERR(0, 1934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__756);
  __Pyx_GIVEREF(__pyx_slice__756);
  __pyx_slice__757 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__757)) __PYX_ERR(0, 1934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__757);
  __Pyx_GIVEREF(__pyx_slice__757);
  __Pyx_INCREF(__pyx_tuple__758);
  __pyx_t_16 = __pyx_tuple__758;
  __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_8 = __Pyx_PyFloat_AddObjC(__pyx_t_14, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_16, __pyx_t_8) < 0)) __PYX_ERR(0, 1934, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__758 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__756, __pyx_slice__757, __pyx_int_0); if (unlikely(!__pyx_tuple__758)) __PYX_ERR(0, 1934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__758);
  __Pyx_GIVEREF(__pyx_tuple__758);
+1935:     torchOffsets[2][..., 0:2, 2:4, 0] += 0.1
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__759 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__759)) __PYX_ERR(0, 1935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__759);
  __Pyx_GIVEREF(__pyx_slice__759);
  __pyx_slice__760 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__760)) __PYX_ERR(0, 1935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__760);
  __Pyx_GIVEREF(__pyx_slice__760);
  __Pyx_INCREF(__pyx_tuple__761);
  __pyx_t_16 = __pyx_tuple__761;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_14 = __Pyx_PyFloat_AddObjC(__pyx_t_7, __pyx_float_0_1, 0.1, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_16, __pyx_t_14) < 0)) __PYX_ERR(0, 1935, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__761 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__759, __pyx_slice__760, __pyx_int_0); if (unlikely(!__pyx_tuple__761)) __PYX_ERR(0, 1935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__761);
  __Pyx_GIVEREF(__pyx_tuple__761);
+1936:     torchOffsets[2][..., 4:6, 2:4, 0] += 0.1
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_8, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__762 = PySlice_New(__pyx_int_4, __pyx_int_6, Py_None); if (unlikely(!__pyx_slice__762)) __PYX_ERR(0, 1936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__762);
  __Pyx_GIVEREF(__pyx_slice__762);
  __pyx_slice__763 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__763)) __PYX_ERR(0, 1936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__763);
  __Pyx_GIVEREF(__pyx_slice__763);
  __Pyx_INCREF(__pyx_tuple__764);
  __pyx_t_16 = __pyx_tuple__764;
  __pyx_t_8 = PyObject_GetItem(__pyx_t_14, __pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyFloat_AddObjC(__pyx_t_8, __pyx_float_0_1, 0.1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_t_16, __pyx_t_7) < 0)) __PYX_ERR(0, 1936, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__764 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__762, __pyx_slice__763, __pyx_int_0); if (unlikely(!__pyx_tuple__764)) __PYX_ERR(0, 1936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__764);
  __Pyx_GIVEREF(__pyx_tuple__764);
+1937:     torchOffsets[2][..., 2, :, 0] += 0.25
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_14, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_slice__765 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__765)) __PYX_ERR(0, 1937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__765);
  __Pyx_GIVEREF(__pyx_slice__765);
  __Pyx_INCREF(__pyx_tuple__766);
  __pyx_t_16 = __pyx_tuple__766;
  __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_8 = __Pyx_PyFloat_AddObjC(__pyx_t_14, __pyx_float_0_25, 0.25, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_16, __pyx_t_8) < 0)) __PYX_ERR(0, 1937, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__766 = PyTuple_Pack(4, Py_Ellipsis, __pyx_int_2, __pyx_slice__765, __pyx_int_0); if (unlikely(!__pyx_tuple__766)) __PYX_ERR(0, 1937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__766);
  __Pyx_GIVEREF(__pyx_tuple__766);
 1938: 
+1939:     torchOffsets[3][..., 3, :, 2] -= 0.5
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__767 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__767)) __PYX_ERR(0, 1939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__767);
  __Pyx_GIVEREF(__pyx_slice__767);
  __Pyx_INCREF(__pyx_tuple__768);
  __pyx_t_16 = __pyx_tuple__768;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_14 = __Pyx_PyFloat_SubtractObjC(__pyx_t_7, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_16, __pyx_t_14) < 0)) __PYX_ERR(0, 1939, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__768 = PyTuple_Pack(4, Py_Ellipsis, __pyx_int_3, __pyx_slice__767, __pyx_int_2); if (unlikely(!__pyx_tuple__768)) __PYX_ERR(0, 1939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__768);
  __Pyx_GIVEREF(__pyx_tuple__768);
+1940:     torchOffsets[3][..., 0:2, 0:2, 2] -= 0.5
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_8, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__769 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__769)) __PYX_ERR(0, 1940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__769);
  __Pyx_GIVEREF(__pyx_slice__769);
  __pyx_slice__770 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__770)) __PYX_ERR(0, 1940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__770);
  __Pyx_GIVEREF(__pyx_slice__770);
  __Pyx_INCREF(__pyx_tuple__771);
  __pyx_t_16 = __pyx_tuple__771;
  __pyx_t_8 = PyObject_GetItem(__pyx_t_14, __pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_t_16, __pyx_t_7) < 0)) __PYX_ERR(0, 1940, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__771 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__769, __pyx_slice__770, __pyx_int_2); if (unlikely(!__pyx_tuple__771)) __PYX_ERR(0, 1940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__771);
  __Pyx_GIVEREF(__pyx_tuple__771);
+1941:     torchOffsets[3][..., 4:6, 0:2, 2] -= 0.5
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_14, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_slice__772 = PySlice_New(__pyx_int_4, __pyx_int_6, Py_None); if (unlikely(!__pyx_slice__772)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__772);
  __Pyx_GIVEREF(__pyx_slice__772);
  __pyx_slice__773 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__773)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__773);
  __Pyx_GIVEREF(__pyx_slice__773);
  __Pyx_INCREF(__pyx_tuple__774);
  __pyx_t_16 = __pyx_tuple__774;
  __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_14, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_16, __pyx_t_8) < 0)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__774 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__772, __pyx_slice__773, __pyx_int_2); if (unlikely(!__pyx_tuple__774)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__774);
  __Pyx_GIVEREF(__pyx_tuple__774);
+1942:     torchOffsets[3][..., 0:2, 2:4, 2] -= 0.1
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__775 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__775)) __PYX_ERR(0, 1942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__775);
  __Pyx_GIVEREF(__pyx_slice__775);
  __pyx_slice__776 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__776)) __PYX_ERR(0, 1942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__776);
  __Pyx_GIVEREF(__pyx_slice__776);
  __Pyx_INCREF(__pyx_tuple__777);
  __pyx_t_16 = __pyx_tuple__777;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_14 = __Pyx_PyFloat_SubtractObjC(__pyx_t_7, __pyx_float_0_1, 0.1, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_16, __pyx_t_14) < 0)) __PYX_ERR(0, 1942, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__777 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__775, __pyx_slice__776, __pyx_int_2); if (unlikely(!__pyx_tuple__777)) __PYX_ERR(0, 1942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__777);
  __Pyx_GIVEREF(__pyx_tuple__777);
+1943:     torchOffsets[3][..., 4:6, 2:4, 2] -= 0.1
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_8, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__778 = PySlice_New(__pyx_int_4, __pyx_int_6, Py_None); if (unlikely(!__pyx_slice__778)) __PYX_ERR(0, 1943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__778);
  __Pyx_GIVEREF(__pyx_slice__778);
  __pyx_slice__779 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__779)) __PYX_ERR(0, 1943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__779);
  __Pyx_GIVEREF(__pyx_slice__779);
  __Pyx_INCREF(__pyx_tuple__780);
  __pyx_t_16 = __pyx_tuple__780;
  __pyx_t_8 = PyObject_GetItem(__pyx_t_14, __pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_1, 0.1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_t_16, __pyx_t_7) < 0)) __PYX_ERR(0, 1943, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__780 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__778, __pyx_slice__779, __pyx_int_2); if (unlikely(!__pyx_tuple__780)) __PYX_ERR(0, 1943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__780);
  __Pyx_GIVEREF(__pyx_tuple__780);
+1944:     torchOffsets[3][..., 2, :, 2] -= 0.25
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_14, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_slice__781 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__781)) __PYX_ERR(0, 1944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__781);
  __Pyx_GIVEREF(__pyx_slice__781);
  __Pyx_INCREF(__pyx_tuple__782);
  __pyx_t_16 = __pyx_tuple__782;
  __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_14, __pyx_float_0_25, 0.25, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_16, __pyx_t_8) < 0)) __PYX_ERR(0, 1944, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__782 = PyTuple_Pack(4, Py_Ellipsis, __pyx_int_2, __pyx_slice__781, __pyx_int_2); if (unlikely(!__pyx_tuple__782)) __PYX_ERR(0, 1944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__782);
  __Pyx_GIVEREF(__pyx_tuple__782);
 1945: 
+1946:     torchOffsets[4][..., 3, :, 2] += 0.5
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__783 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__783)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__783);
  __Pyx_GIVEREF(__pyx_slice__783);
  __Pyx_INCREF(__pyx_tuple__784);
  __pyx_t_16 = __pyx_tuple__784;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_14 = __Pyx_PyFloat_AddObjC(__pyx_t_7, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_16, __pyx_t_14) < 0)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__784 = PyTuple_Pack(4, Py_Ellipsis, __pyx_int_3, __pyx_slice__783, __pyx_int_2); if (unlikely(!__pyx_tuple__784)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__784);
  __Pyx_GIVEREF(__pyx_tuple__784);
+1947:     torchOffsets[4][..., 0:2, 0:2, 2] += 0.5
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_8, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__785 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__785)) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__785);
  __Pyx_GIVEREF(__pyx_slice__785);
  __pyx_slice__786 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__786)) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__786);
  __Pyx_GIVEREF(__pyx_slice__786);
  __Pyx_INCREF(__pyx_tuple__787);
  __pyx_t_16 = __pyx_tuple__787;
  __pyx_t_8 = PyObject_GetItem(__pyx_t_14, __pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyFloat_AddObjC(__pyx_t_8, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_t_16, __pyx_t_7) < 0)) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__787 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__785, __pyx_slice__786, __pyx_int_2); if (unlikely(!__pyx_tuple__787)) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__787);
  __Pyx_GIVEREF(__pyx_tuple__787);
+1948:     torchOffsets[4][..., 4:6, 0:2, 2] += 0.5
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_14, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_slice__788 = PySlice_New(__pyx_int_4, __pyx_int_6, Py_None); if (unlikely(!__pyx_slice__788)) __PYX_ERR(0, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__788);
  __Pyx_GIVEREF(__pyx_slice__788);
  __pyx_slice__789 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__789)) __PYX_ERR(0, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__789);
  __Pyx_GIVEREF(__pyx_slice__789);
  __Pyx_INCREF(__pyx_tuple__790);
  __pyx_t_16 = __pyx_tuple__790;
  __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_8 = __Pyx_PyFloat_AddObjC(__pyx_t_14, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_16, __pyx_t_8) < 0)) __PYX_ERR(0, 1948, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__790 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__788, __pyx_slice__789, __pyx_int_2); if (unlikely(!__pyx_tuple__790)) __PYX_ERR(0, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__790);
  __Pyx_GIVEREF(__pyx_tuple__790);
+1949:     torchOffsets[4][..., 0:2, 2:4, 2] += 0.1
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__791 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__791)) __PYX_ERR(0, 1949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__791);
  __Pyx_GIVEREF(__pyx_slice__791);
  __pyx_slice__792 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__792)) __PYX_ERR(0, 1949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__792);
  __Pyx_GIVEREF(__pyx_slice__792);
  __Pyx_INCREF(__pyx_tuple__793);
  __pyx_t_16 = __pyx_tuple__793;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_14 = __Pyx_PyFloat_AddObjC(__pyx_t_7, __pyx_float_0_1, 0.1, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_16, __pyx_t_14) < 0)) __PYX_ERR(0, 1949, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__793 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__791, __pyx_slice__792, __pyx_int_2); if (unlikely(!__pyx_tuple__793)) __PYX_ERR(0, 1949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__793);
  __Pyx_GIVEREF(__pyx_tuple__793);
+1950:     torchOffsets[4][..., 4:6, 2:4, 2] += 0.1
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_8, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__794 = PySlice_New(__pyx_int_4, __pyx_int_6, Py_None); if (unlikely(!__pyx_slice__794)) __PYX_ERR(0, 1950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__794);
  __Pyx_GIVEREF(__pyx_slice__794);
  __pyx_slice__795 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__795)) __PYX_ERR(0, 1950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__795);
  __Pyx_GIVEREF(__pyx_slice__795);
  __Pyx_INCREF(__pyx_tuple__796);
  __pyx_t_16 = __pyx_tuple__796;
  __pyx_t_8 = PyObject_GetItem(__pyx_t_14, __pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyFloat_AddObjC(__pyx_t_8, __pyx_float_0_1, 0.1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_t_16, __pyx_t_7) < 0)) __PYX_ERR(0, 1950, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_tuple__796 = PyTuple_Pack(4, Py_Ellipsis, __pyx_slice__794, __pyx_slice__795, __pyx_int_2); if (unlikely(!__pyx_tuple__796)) __PYX_ERR(0, 1950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__796);
  __Pyx_GIVEREF(__pyx_tuple__796);
+1951:     torchOffsets[4][..., 2, :, 2] += 0.25
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_torchOffsets);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_torchOffsets);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_14, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_slice__797 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__797)) __PYX_ERR(0, 1951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__797);
  __Pyx_GIVEREF(__pyx_slice__797);
  __Pyx_INCREF(__pyx_tuple__798);
  __pyx_t_16 = __pyx_tuple__798;
  __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_8 = __Pyx_PyFloat_AddObjC(__pyx_t_14, __pyx_float_0_25, 0.25, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_16, __pyx_t_8) < 0)) __PYX_ERR(0, 1951, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__798 = PyTuple_Pack(4, Py_Ellipsis, __pyx_int_2, __pyx_slice__797, __pyx_int_2); if (unlikely(!__pyx_tuple__798)) __PYX_ERR(0, 1951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__798);
  __Pyx_GIVEREF(__pyx_tuple__798);
 1952: 
+1953:     upCoords = ((7, 6), (7, 8), (9, 8), (9, 6))
  __pyx_tuple__799 = PyTuple_Pack(2, __pyx_int_7, __pyx_int_6); if (unlikely(!__pyx_tuple__799)) __PYX_ERR(0, 1953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__799);
  __Pyx_GIVEREF(__pyx_tuple__799);
  __pyx_tuple__800 = PyTuple_Pack(2, __pyx_int_7, __pyx_int_8); if (unlikely(!__pyx_tuple__800)) __PYX_ERR(0, 1953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__800);
  __Pyx_GIVEREF(__pyx_tuple__800);
  __pyx_tuple__801 = PyTuple_Pack(2, __pyx_int_9, __pyx_int_8); if (unlikely(!__pyx_tuple__801)) __PYX_ERR(0, 1953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__801);
  __Pyx_GIVEREF(__pyx_tuple__801);
  __pyx_tuple__802 = PyTuple_Pack(2, __pyx_int_9, __pyx_int_6); if (unlikely(!__pyx_tuple__802)) __PYX_ERR(0, 1953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__802);
  __Pyx_GIVEREF(__pyx_tuple__802);
/* … */
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_upCoords, __pyx_tuple__803) < 0) __PYX_ERR(0, 1953, __pyx_L1_error)
  __pyx_tuple__803 = PyTuple_Pack(4, __pyx_tuple__799, __pyx_tuple__800, __pyx_tuple__801, __pyx_tuple__802); if (unlikely(!__pyx_tuple__803)) __PYX_ERR(0, 1953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__803);
  __Pyx_GIVEREF(__pyx_tuple__803);
+1954:     downCoords = ((7, 14), (7, 16), (9, 16), (9, 14))
  __pyx_tuple__804 = PyTuple_Pack(2, __pyx_int_7, __pyx_int_14); if (unlikely(!__pyx_tuple__804)) __PYX_ERR(0, 1954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__804);
  __Pyx_GIVEREF(__pyx_tuple__804);
  __pyx_tuple__805 = PyTuple_Pack(2, __pyx_int_7, __pyx_int_16); if (unlikely(!__pyx_tuple__805)) __PYX_ERR(0, 1954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__805);
  __Pyx_GIVEREF(__pyx_tuple__805);
  __pyx_tuple__806 = PyTuple_Pack(2, __pyx_int_9, __pyx_int_16); if (unlikely(!__pyx_tuple__806)) __PYX_ERR(0, 1954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__806);
  __Pyx_GIVEREF(__pyx_tuple__806);
  __pyx_tuple__807 = PyTuple_Pack(2, __pyx_int_9, __pyx_int_14); if (unlikely(!__pyx_tuple__807)) __PYX_ERR(0, 1954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__807);
  __Pyx_GIVEREF(__pyx_tuple__807);
/* … */
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_downCoords, __pyx_tuple__808) < 0) __PYX_ERR(0, 1954, __pyx_L1_error)
  __pyx_tuple__808 = PyTuple_Pack(4, __pyx_tuple__804, __pyx_tuple__805, __pyx_tuple__806, __pyx_tuple__807); if (unlikely(!__pyx_tuple__808)) __PYX_ERR(0, 1954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__808);
  __Pyx_GIVEREF(__pyx_tuple__808);
 1955: 
+1956:     def makeTorchVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18TorchBlockRenderer_3makeTorchVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18TorchBlockRenderer_3makeTorchVertices = {"makeTorchVertices", (PyCFunction)__pyx_pw_9_renderer_18TorchBlockRenderer_3makeTorchVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18TorchBlockRenderer_3makeTorchVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  CYTHON_UNUSED PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeTorchVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeTorchVertices", 1, 7, 7, 1); __PYX_ERR(0, 1956, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeTorchVertices", 1, 7, 7, 2); __PYX_ERR(0, 1956, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeTorchVertices", 1, 7, 7, 3); __PYX_ERR(0, 1956, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeTorchVertices", 1, 7, 7, 4); __PYX_ERR(0, 1956, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeTorchVertices", 1, 7, 7, 5); __PYX_ERR(0, 1956, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeTorchVertices", 1, 7, 7, 6); __PYX_ERR(0, 1956, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeTorchVertices") < 0)) __PYX_ERR(0, 1956, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeTorchVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1956, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.TorchBlockRenderer.makeTorchVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18TorchBlockRenderer_2makeTorchVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18TorchBlockRenderer_2makeTorchVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, CYTHON_UNUSED PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_24_makeTorchVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeTorchVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_24_makeTorchVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_24_makeTorchVertices(__pyx_ptype_9_renderer___pyx_scope_struct_24_makeTorchVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_18TorchBlockRenderer_4generator17, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeTorchVertices, __pyx_n_s_TorchBlockRenderer_makeTorchVert, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 1956, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.TorchBlockRenderer.makeTorchVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_18TorchBlockRenderer_4generator17(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1956, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("makeTorchVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__809 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_blockIndices, __pyx_n_s_torchOffsets, __pyx_n_s_texes, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__809)) __PYX_ERR(0, 1956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__809);
  __Pyx_GIVEREF(__pyx_tuple__809);
/* … */
  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18TorchBlockRenderer_3makeTorchVertices, 0, __pyx_n_s_TorchBlockRenderer_makeTorchVert, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__810)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeTorchVertices, __pyx_t_7) < 0) __PYX_ERR(0, 1956, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_codeobj__810 = (PyObject*)__Pyx_PyCode_New(7, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__809, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeTorchVertices, 1956, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__810)) __PYX_ERR(0, 1956, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_24_makeTorchVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  long __pyx_v_direction;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_texes;
  PyObject *__pyx_v_torchOffsets;
  PyObject *__pyx_v_vertexArray;
  long __pyx_t_0;
};

+1957:         blockIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1957, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1957, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1957, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blockIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+1958:         torchOffsets = self.torchOffsets[blockData[blockIndices]]
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_torchOffsets); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_torchOffsets = __pyx_t_4;
  __pyx_t_4 = 0;
+1959:         texes = texMap(blocks[blockIndices], blockData[blockIndices])
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __pyx_t_3 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_texes = __pyx_t_4;
  __pyx_t_4 = 0;
+1960:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1960, __pyx_L1_error)
+1961:         arrays = []
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
+1962:         append = arrays.append
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_4;
  __pyx_t_4 = 0;
+1963:         for direction in xrange(6):
  for (__pyx_t_8 = 0; __pyx_t_8 < 6; __pyx_t_8+=1) {
    __pyx_cur_scope->__pyx_v_direction = __pyx_t_8;
+1964:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_t_7);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_7 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+1965:             if not len(vertexArray):
    __pyx_t_6 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1965, __pyx_L1_error)
    __pyx_t_9 = ((!(__pyx_t_6 != 0)) != 0);
    if (__pyx_t_9) {
/* … */
    }
+1966:                 return
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = NULL;
      goto __pyx_L0;
 1967: 
+1968:             vertexArray.view('uint8')[_RGBA] = 0xff
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1968, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__377, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1968, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGBA); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1968, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_4, __pyx_int_255) < 0)) __PYX_ERR(0, 1968, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__377 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__377)) __PYX_ERR(0, 1968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__377);
  __Pyx_GIVEREF(__pyx_tuple__377);
+1969:             vertexArray[_XYZ] += torchOffsets[:, direction]
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_slice__378);
    __Pyx_GIVEREF(__pyx_slice__378);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__378);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_torchOffsets, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4, __pyx_t_7) < 0)) __PYX_ERR(0, 1969, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__378 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__378)) __PYX_ERR(0, 1969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__378);
  __Pyx_GIVEREF(__pyx_slice__378);
+1970:             if direction == pymclevel.faces.FaceYIncreasing:
    __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1970, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1970, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_9) {
/* … */
    }
+1971:                 vertexArray[_ST] = self.upCoords
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_upCoords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1971, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1971, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7, __pyx_t_2) < 0)) __PYX_ERR(0, 1971, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1972:             if direction == pymclevel.faces.FaceYDecreasing:
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1972, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1972, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1972, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceYDecreasing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1972, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1972, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1972, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
/* … */
    }
+1973:                 vertexArray[_ST] = self.downCoords
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_downCoords); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1973, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1973, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7, __pyx_t_4) < 0)) __PYX_ERR(0, 1973, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1974:             vertexArray[_ST] += texes[:, numpy.newaxis, direction]
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_slice__379);
    __Pyx_GIVEREF(__pyx_slice__379);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_slice__379);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_texes, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4, __pyx_t_1) < 0)) __PYX_ERR(0, 1974, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__379 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__379)) __PYX_ERR(0, 1974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__379);
  __Pyx_GIVEREF(__pyx_slice__379);
+1975:             append(vertexArray)
    __pyx_t_10 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 1975, __pyx_L1_error)
+1976:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_8;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L10_resume_from_yield:;
    __pyx_t_8 = __pyx_cur_scope->__pyx_t_0;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1976, __pyx_L1_error)
  }
+1977:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 1977, __pyx_L1_error)
 1978: 
+1979:     makeVertices = makeTorchVertices
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeTorchVertices);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeTorchVertices);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_7) < 0) __PYX_ERR(0, 1979, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 1980: 
 1981: 
+1982: class LeverBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_LeverBlockRenderer, __pyx_n_s_LeverBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_14 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_LeverBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LeverBlockRenderer, __pyx_t_14) < 0) __PYX_ERR(0, 1982, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1983:     @classmethod
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_8) < 0) __PYX_ERR(0, 1984, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1984:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18LeverBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18LeverBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_18LeverBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18LeverBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 1984, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 1984, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1984, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.LeverBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18LeverBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18LeverBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.LeverBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__811 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__811)) __PYX_ERR(0, 1984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__811);
  __Pyx_GIVEREF(__pyx_tuple__811);
/* … */
  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18LeverBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_LeverBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__812)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_codeobj__812 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__811, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 1984, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__812)) __PYX_ERR(0, 1984, __pyx_L1_error)
+1985:         return [mats["minecraft:lever"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_lever); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 1986: 
+1987:     leverBaseTemplate = makeVertexTemplatesFromJsonModel((5, 0, 4), (11, 3, 12), {
  __pyx_tuple__813 = PyTuple_Pack(3, __pyx_int_5, __pyx_int_0, __pyx_int_4); if (unlikely(!__pyx_tuple__813)) __PYX_ERR(0, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__813);
  __Pyx_GIVEREF(__pyx_tuple__813);
  __pyx_tuple__814 = PyTuple_Pack(3, __pyx_int_11, __pyx_int_3, __pyx_int_12); if (unlikely(!__pyx_tuple__814)) __PYX_ERR(0, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__814);
  __Pyx_GIVEREF(__pyx_tuple__814);
/* … */
  __pyx_t_7 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__813, __pyx_tuple__814, __pyx_t_8)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate, __pyx_t_7) < 0) __PYX_ERR(0, 1987, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+1988:         "down": (10, 0, 16, 8),
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_down, __pyx_tuple__815) < 0) __PYX_ERR(0, 1988, __pyx_L1_error)
/* … */
  __pyx_tuple__815 = PyTuple_Pack(4, __pyx_int_10, __pyx_int_0, __pyx_int_16, __pyx_int_8); if (unlikely(!__pyx_tuple__815)) __PYX_ERR(0, 1988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__815);
  __Pyx_GIVEREF(__pyx_tuple__815);
+1989:         "up": (10, 0, 16, 8),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_up, __pyx_tuple__816) < 0) __PYX_ERR(0, 1988, __pyx_L1_error)
/* … */
  __pyx_tuple__816 = PyTuple_Pack(4, __pyx_int_10, __pyx_int_0, __pyx_int_16, __pyx_int_8); if (unlikely(!__pyx_tuple__816)) __PYX_ERR(0, 1989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__816);
  __Pyx_GIVEREF(__pyx_tuple__816);
+1990:         "north": (10, 8, 16, 11),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_north, __pyx_tuple__817) < 0) __PYX_ERR(0, 1988, __pyx_L1_error)
/* … */
  __pyx_tuple__817 = PyTuple_Pack(4, __pyx_int_10, __pyx_int_8, __pyx_int_16, __pyx_int_11); if (unlikely(!__pyx_tuple__817)) __PYX_ERR(0, 1990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__817);
  __Pyx_GIVEREF(__pyx_tuple__817);
+1991:         "south": (10, 8, 16, 11),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_south, __pyx_tuple__818) < 0) __PYX_ERR(0, 1988, __pyx_L1_error)
/* … */
  __pyx_tuple__818 = PyTuple_Pack(4, __pyx_int_10, __pyx_int_8, __pyx_int_16, __pyx_int_11); if (unlikely(!__pyx_tuple__818)) __PYX_ERR(0, 1991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__818);
  __Pyx_GIVEREF(__pyx_tuple__818);
+1992:         "west": (2, 0, 10, 3),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_west, __pyx_tuple__819) < 0) __PYX_ERR(0, 1988, __pyx_L1_error)
/* … */
  __pyx_tuple__819 = PyTuple_Pack(4, __pyx_int_2, __pyx_int_0, __pyx_int_10, __pyx_int_3); if (unlikely(!__pyx_tuple__819)) __PYX_ERR(0, 1992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__819);
  __Pyx_GIVEREF(__pyx_tuple__819);
+1993:         "east": (2, 0, 10, 3)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_east, __pyx_tuple__820) < 0) __PYX_ERR(0, 1988, __pyx_L1_error)
/* … */
  __pyx_tuple__820 = PyTuple_Pack(4, __pyx_int_2, __pyx_int_0, __pyx_int_10, __pyx_int_3); if (unlikely(!__pyx_tuple__820)) __PYX_ERR(0, 1993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__820);
  __Pyx_GIVEREF(__pyx_tuple__820);
 1994:     })
 1995: 
+1996:     leverBaseTemplates = numpy.array([
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_array); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_t_26 = PyList_New(17); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_26, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_26, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_26, 2, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_26, 3, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_26, 4, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_26, 5, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_26, 6, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_26, 7, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_18);
  PyList_SET_ITEM(__pyx_t_26, 8, __pyx_t_18);
  __Pyx_GIVEREF(__pyx_t_19);
  PyList_SET_ITEM(__pyx_t_26, 9, __pyx_t_19);
  __Pyx_GIVEREF(__pyx_t_20);
  PyList_SET_ITEM(__pyx_t_26, 10, __pyx_t_20);
  __Pyx_GIVEREF(__pyx_t_21);
  PyList_SET_ITEM(__pyx_t_26, 11, __pyx_t_21);
  __Pyx_GIVEREF(__pyx_t_22);
  PyList_SET_ITEM(__pyx_t_26, 12, __pyx_t_22);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_26, 13, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_24);
  PyList_SET_ITEM(__pyx_t_26, 14, __pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_23);
  PyList_SET_ITEM(__pyx_t_26, 15, __pyx_t_23);
  __Pyx_GIVEREF(__pyx_t_25);
  PyList_SET_ITEM(__pyx_t_26, 16, __pyx_t_25);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_10 = 0;
  __pyx_t_15 = 0;
  __pyx_t_12 = 0;
  __pyx_t_8 = 0;
  __pyx_t_13 = 0;
  __pyx_t_11 = 0;
  __pyx_t_18 = 0;
  __pyx_t_19 = 0;
  __pyx_t_20 = 0;
  __pyx_t_21 = 0;
  __pyx_t_22 = 0;
  __pyx_t_4 = 0;
  __pyx_t_24 = 0;
  __pyx_t_23 = 0;
  __pyx_t_25 = 0;
  __pyx_t_25 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_14))) {
    __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_14);
    if (likely(__pyx_t_25)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_14, function);
    }
  }
  if (!__pyx_t_25) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_26); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1996, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_23 = PyTuple_New(1+1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_25); __pyx_t_25 = NULL;
    __Pyx_GIVEREF(__pyx_t_26);
    PyTuple_SET_ITEM(__pyx_t_23, 0+1, __pyx_t_26);
    __pyx_t_26 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_23, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  }
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplates, __pyx_t_7) < 0) __PYX_ERR(0, 1996, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+1997:         rotateTemplate(leverBaseTemplate, x=180, y=90),
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1997, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0xB4;
  __pyx_t_17.y = 90;
  __pyx_t_5 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_8), &__pyx_t_17)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1998:         rotateTemplate(leverBaseTemplate, x=90, y=90),
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1998, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 90;
  __pyx_t_6 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_8), &__pyx_t_17)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1999:         rotateTemplate(leverBaseTemplate, x=90, y=270),
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1999, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0x10E;
  __pyx_t_10 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_8), &__pyx_t_17)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2000:         rotateTemplate(leverBaseTemplate, x=90, y=180),
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2000, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0xB4;
  __pyx_t_15 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_8), &__pyx_t_17)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2001:         rotateTemplate(leverBaseTemplate, x=270, y=180),
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2001, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0x10E;
  __pyx_t_17.y = 0xB4;
  __pyx_t_12 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_8), &__pyx_t_17)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2002:         leverBaseTemplate,
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
+2003:         rotateTemplate(leverBaseTemplate, x=0, y=90),
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2003, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_13 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_4), &__pyx_t_17)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2004:         rotateTemplate(leverBaseTemplate, x=180),
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2004, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 0xB4;
  __pyx_t_11 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_4), &__pyx_t_17)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2005:         rotateTemplate(leverBaseTemplate, x=180, y=90),
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2005, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0xB4;
  __pyx_t_17.y = 90;
  __pyx_t_18 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_4), &__pyx_t_17)); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2006:         rotateTemplate(leverBaseTemplate, x=90, y=90),
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2006, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 90;
  __pyx_t_19 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_4), &__pyx_t_17)); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2007:         rotateTemplate(leverBaseTemplate, x=270, y=90),
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2007, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0x10E;
  __pyx_t_17.y = 90;
  __pyx_t_20 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_4), &__pyx_t_17)); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 2007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2008:         rotateTemplate(leverBaseTemplate, x=270),
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2008, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 0x10E;
  __pyx_t_21 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_4), &__pyx_t_17)); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2009:         rotateTemplate(leverBaseTemplate, x=270, y=180),
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2009, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0x10E;
  __pyx_t_17.y = 0xB4;
  __pyx_t_22 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_4), &__pyx_t_17)); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2010:         leverBaseTemplate,
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_4)) {
    PyErr_Clear();
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
+2011:         rotateTemplate(leverBaseTemplate, x=0, y=90),
  __pyx_t_23 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplate);
  if (unlikely(!__pyx_t_23)) {
    PyErr_Clear();
    __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplate);
  }
  if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2011, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_24 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_23), &__pyx_t_17)); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
+2012:         numpy.zeros((6, 4, 6)), numpy.zeros((6, 4, 6))
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_zeros); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
/* … */
  __pyx_tuple__821 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__821)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__821);
  __Pyx_GIVEREF(__pyx_tuple__821);
  __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_tuple__822, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_zeros); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_tuple__822 = PyTuple_Pack(1, __pyx_tuple__821); if (unlikely(!__pyx_tuple__822)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__822);
  __Pyx_GIVEREF(__pyx_tuple__822);
  __pyx_tuple__823 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__823)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__823);
  __Pyx_GIVEREF(__pyx_tuple__823);
  __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_tuple__824, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  __pyx_tuple__824 = PyTuple_Pack(1, __pyx_tuple__823); if (unlikely(!__pyx_tuple__824)) __PYX_ERR(0, 2012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__824);
  __Pyx_GIVEREF(__pyx_tuple__824);
 2013:     ])
 2014: 
+2015:     leverTemplate = makeVertexTemplatesFromJsonModel((7, 1, 7), (9, 11, 9), {
  __pyx_tuple__825 = PyTuple_Pack(3, __pyx_int_7, __pyx_int_1, __pyx_int_7); if (unlikely(!__pyx_tuple__825)) __PYX_ERR(0, 2015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__825);
  __Pyx_GIVEREF(__pyx_tuple__825);
  __pyx_tuple__826 = PyTuple_Pack(3, __pyx_int_9, __pyx_int_11, __pyx_int_9); if (unlikely(!__pyx_tuple__826)) __PYX_ERR(0, 2015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__826);
  __Pyx_GIVEREF(__pyx_tuple__826);
/* … */
  __pyx_t_14 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__825, __pyx_tuple__826, __pyx_t_7)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_leverTemplate, __pyx_t_14) < 0) __PYX_ERR(0, 2015, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2016:         "down": (7, 6, 9, 8),
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_down, __pyx_tuple__827) < 0) __PYX_ERR(0, 2016, __pyx_L1_error)
/* … */
  __pyx_tuple__827 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_6, __pyx_int_9, __pyx_int_8); if (unlikely(!__pyx_tuple__827)) __PYX_ERR(0, 2016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__827);
  __Pyx_GIVEREF(__pyx_tuple__827);
+2017:         "up": (7, 6, 9, 8),
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_up, __pyx_tuple__828) < 0) __PYX_ERR(0, 2016, __pyx_L1_error)
/* … */
  __pyx_tuple__828 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_6, __pyx_int_9, __pyx_int_8); if (unlikely(!__pyx_tuple__828)) __PYX_ERR(0, 2017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__828);
  __Pyx_GIVEREF(__pyx_tuple__828);
+2018:         "north": (7, 6, 9, 16),
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_north, __pyx_tuple__829) < 0) __PYX_ERR(0, 2016, __pyx_L1_error)
/* … */
  __pyx_tuple__829 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_6, __pyx_int_9, __pyx_int_16); if (unlikely(!__pyx_tuple__829)) __PYX_ERR(0, 2018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__829);
  __Pyx_GIVEREF(__pyx_tuple__829);
+2019:         "south": (7, 6, 9, 16),
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_south, __pyx_tuple__830) < 0) __PYX_ERR(0, 2016, __pyx_L1_error)
/* … */
  __pyx_tuple__830 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_6, __pyx_int_9, __pyx_int_16); if (unlikely(!__pyx_tuple__830)) __PYX_ERR(0, 2019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__830);
  __Pyx_GIVEREF(__pyx_tuple__830);
+2020:         "west": (7, 6, 9, 16),
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_west, __pyx_tuple__831) < 0) __PYX_ERR(0, 2016, __pyx_L1_error)
/* … */
  __pyx_tuple__831 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_6, __pyx_int_9, __pyx_int_16); if (unlikely(!__pyx_tuple__831)) __PYX_ERR(0, 2020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__831);
  __Pyx_GIVEREF(__pyx_tuple__831);
+2021:         "east": (7, 6, 9, 16)
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_east, __pyx_tuple__832) < 0) __PYX_ERR(0, 2016, __pyx_L1_error)
/* … */
  __pyx_tuple__832 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_6, __pyx_int_9, __pyx_int_16); if (unlikely(!__pyx_tuple__832)) __PYX_ERR(0, 2021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__832);
  __Pyx_GIVEREF(__pyx_tuple__832);
 2022:     })
 2023: 
+2024:     leverTemplates = numpy.array([
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_t_5 = PyList_New(17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_26);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_26);
  __Pyx_GIVEREF(__pyx_t_25);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_25);
  __Pyx_GIVEREF(__pyx_t_24);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_22);
  PyList_SET_ITEM(__pyx_t_5, 4, __pyx_t_22);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_5, 5, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_20);
  PyList_SET_ITEM(__pyx_t_5, 6, __pyx_t_20);
  __Pyx_GIVEREF(__pyx_t_19);
  PyList_SET_ITEM(__pyx_t_5, 7, __pyx_t_19);
  __Pyx_GIVEREF(__pyx_t_18);
  PyList_SET_ITEM(__pyx_t_5, 8, __pyx_t_18);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_5, 9, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_5, 10, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_5, 11, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_5, 12, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_21);
  PyList_SET_ITEM(__pyx_t_5, 13, __pyx_t_21);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_5, 14, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_5, 15, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_5, 16, __pyx_t_6);
  __pyx_t_26 = 0;
  __pyx_t_25 = 0;
  __pyx_t_24 = 0;
  __pyx_t_4 = 0;
  __pyx_t_22 = 0;
  __pyx_t_7 = 0;
  __pyx_t_20 = 0;
  __pyx_t_19 = 0;
  __pyx_t_18 = 0;
  __pyx_t_11 = 0;
  __pyx_t_13 = 0;
  __pyx_t_8 = 0;
  __pyx_t_12 = 0;
  __pyx_t_21 = 0;
  __pyx_t_15 = 0;
  __pyx_t_10 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_23);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_23, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2024, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_14);
  } else {
    __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_10, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_leverTemplates, __pyx_t_14) < 0) __PYX_ERR(0, 2024, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2025:         rotateTemplate(leverTemplate, x=180),
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2025, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 0xB4;
  __pyx_t_26 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_7), &__pyx_t_17)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2026:         rotateTemplate(leverTemplate, x=90, y=90),
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2026, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 90;
  __pyx_t_25 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_7), &__pyx_t_17)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2027:         rotateTemplate(leverTemplate, x=90, y=270),
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2027, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0x10E;
  __pyx_t_24 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_7), &__pyx_t_17)); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2028:         rotateTemplate(leverTemplate, x=90, y=180),
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2028, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0xB4;
  __pyx_t_4 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_7), &__pyx_t_17)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2029:         rotateTemplate(leverTemplate, x=270, y=180),
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2029, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0x10E;
  __pyx_t_17.y = 0xB4;
  __pyx_t_22 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_7), &__pyx_t_17)); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2030:         leverTemplate,
  __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_7)) {
    PyErr_Clear();
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
+2031:         rotateTemplate(leverTemplate, x=0, y=90),
  __pyx_t_21 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_21)) {
    PyErr_Clear();
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2031, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_20 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_21), &__pyx_t_17)); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 2031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+2032:         rotateTemplate(leverTemplate, x=180),
  __pyx_t_21 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_21)) {
    PyErr_Clear();
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2032, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 0xB4;
  __pyx_t_19 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_21), &__pyx_t_17)); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+2033:         rotateTemplate(leverTemplate, x=180),
  __pyx_t_21 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_21)) {
    PyErr_Clear();
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2033, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 0xB4;
  __pyx_t_18 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_21), &__pyx_t_17)); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+2034:         rotateTemplate(leverTemplate, x=90, y=90),
  __pyx_t_21 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_21)) {
    PyErr_Clear();
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2034, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 90;
  __pyx_t_11 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_21), &__pyx_t_17)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+2035:         rotateTemplate(leverTemplate, x=270, y=90),
  __pyx_t_21 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_21)) {
    PyErr_Clear();
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2035, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0x10E;
  __pyx_t_17.y = 90;
  __pyx_t_13 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_21), &__pyx_t_17)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+2036:         rotateTemplate(leverTemplate, x=270),
  __pyx_t_21 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_21)) {
    PyErr_Clear();
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2036, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 0x10E;
  __pyx_t_8 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_21), &__pyx_t_17)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+2037:         rotateTemplate(leverTemplate, x=270, y=180),
  __pyx_t_21 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_21)) {
    PyErr_Clear();
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2037, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0x10E;
  __pyx_t_17.y = 0xB4;
  __pyx_t_12 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_21), &__pyx_t_17)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+2038:         leverTemplate,
  __pyx_t_21 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_21)) {
    PyErr_Clear();
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
+2039:         leverTemplate,
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplate);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplate);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
+2040:         numpy.zeros((6, 4, 6)), numpy.zeros((6, 4, 6))
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_tuple__833 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__833)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__833);
  __Pyx_GIVEREF(__pyx_tuple__833);
  __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__834, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_tuple__834 = PyTuple_Pack(1, __pyx_tuple__833); if (unlikely(!__pyx_tuple__834)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__834);
  __Pyx_GIVEREF(__pyx_tuple__834);
  __pyx_tuple__835 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__835)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__835);
  __Pyx_GIVEREF(__pyx_tuple__835);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__836, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_tuple__836 = PyTuple_Pack(1, __pyx_tuple__835); if (unlikely(!__pyx_tuple__836)) __PYX_ERR(0, 2040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__836);
  __Pyx_GIVEREF(__pyx_tuple__836);
 2041:     ])
 2042: 
+2043:     makeVertices = makeVerticesFromModel([leverBaseTemplates, leverTemplates], 15)
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeVerticesFromModel); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_10 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverBaseTemplates);
  if (unlikely(!__pyx_t_10)) {
    PyErr_Clear();
    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverBaseTemplates);
  }
  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_leverTemplates);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_leverTemplates);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_10 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_23);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_23, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_15);
  __Pyx_GIVEREF(__pyx_int_15);
  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_int_15);
  __pyx_t_6 = 0;
  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_10, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_14) < 0) __PYX_ERR(0, 2043, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
 2044: 
 2045: 
+2046: class RailBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_RailBlockRenderer, __pyx_n_s_RailBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_6 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_RailBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RailBlockRenderer, __pyx_t_6) < 0) __PYX_ERR(0, 2046, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2047:     renderstate = ChunkCalculator.renderstateAlphaTest
  __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_renderstateAlphaTest); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_23) < 0) __PYX_ERR(0, 2047, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
 2048: 
+2049:     @classmethod
  __pyx_t_14 = __Pyx_Method_ClassMethod(__pyx_t_23); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_14) < 0) __PYX_ERR(0, 2050, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2050:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17RailBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17RailBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_17RailBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17RailBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2050, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2050, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.RailBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17RailBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17RailBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_block = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.RailBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_block);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_17RailBlockRenderer_4generator18(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__837 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_block); if (unlikely(!__pyx_tuple__837)) __PYX_ERR(0, 2050, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__837);
  __Pyx_GIVEREF(__pyx_tuple__837);
/* … */
  __pyx_t_23 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17RailBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_RailBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__838)); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2050, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_codeobj__838 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__837, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2050, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__838)) __PYX_ERR(0, 2050, __pyx_L1_error)
+2051:         return [block.ID for block in mats.blocksByType["SIMPLE_RAIL"]]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_SIMPLE_RAIL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2051, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2051, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2051, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2051, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_block, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_block, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 2051, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2052: 
+2053:     railTextures = numpy.array([
  __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_array); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_t_24 = PyList_New(16); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_14);
  PyList_SET_ITEM(__pyx_t_24, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_24, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_24, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_24, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_24, 4, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_21);
  PyList_SET_ITEM(__pyx_t_24, 5, __pyx_t_21);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_24, 6, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_24, 7, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_24, 8, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_24, 9, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_18);
  PyList_SET_ITEM(__pyx_t_24, 10, __pyx_t_18);
  __Pyx_GIVEREF(__pyx_t_19);
  PyList_SET_ITEM(__pyx_t_24, 11, __pyx_t_19);
  __Pyx_GIVEREF(__pyx_t_20);
  PyList_SET_ITEM(__pyx_t_24, 12, __pyx_t_20);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_24, 13, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_22);
  PyList_SET_ITEM(__pyx_t_24, 14, __pyx_t_22);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_24, 15, __pyx_t_4);
  __pyx_t_14 = 0;
  __pyx_t_10 = 0;
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
  __pyx_t_15 = 0;
  __pyx_t_21 = 0;
  __pyx_t_12 = 0;
  __pyx_t_8 = 0;
  __pyx_t_13 = 0;
  __pyx_t_11 = 0;
  __pyx_t_18 = 0;
  __pyx_t_19 = 0;
  __pyx_t_20 = 0;
  __pyx_t_7 = 0;
  __pyx_t_22 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_24);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_24);
  __pyx_t_24 = 0;
/* … */
  __pyx_t_22 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_4, __pyx_t_24); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_railTextures, __pyx_t_22) < 0) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
+2054:         [(0, 128), (0, 144), (16, 144), (16, 128)],  # east-west
  __pyx_tuple__839 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__839)) __PYX_ERR(0, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__839);
  __Pyx_GIVEREF(__pyx_tuple__839);
  __pyx_tuple__840 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_144); if (unlikely(!__pyx_tuple__840)) __PYX_ERR(0, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__840);
  __Pyx_GIVEREF(__pyx_tuple__840);
  __pyx_tuple__841 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_144); if (unlikely(!__pyx_tuple__841)) __PYX_ERR(0, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__841);
  __Pyx_GIVEREF(__pyx_tuple__841);
/* … */
  __pyx_t_14 = PyList_New(4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_INCREF(__pyx_tuple__839);
  __Pyx_GIVEREF(__pyx_tuple__839);
  PyList_SET_ITEM(__pyx_t_14, 0, __pyx_tuple__839);
  __Pyx_INCREF(__pyx_tuple__840);
  __Pyx_GIVEREF(__pyx_tuple__840);
  PyList_SET_ITEM(__pyx_t_14, 1, __pyx_tuple__840);
  __Pyx_INCREF(__pyx_tuple__841);
  __Pyx_GIVEREF(__pyx_tuple__841);
  PyList_SET_ITEM(__pyx_t_14, 2, __pyx_tuple__841);
  __Pyx_INCREF(__pyx_tuple__842);
  __Pyx_GIVEREF(__pyx_tuple__842);
  PyList_SET_ITEM(__pyx_t_14, 3, __pyx_tuple__842);
  __pyx_tuple__842 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__842)) __PYX_ERR(0, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__842);
  __Pyx_GIVEREF(__pyx_tuple__842);
+2055:         [(0, 128), (16, 128), (16, 144), (0, 144)],  # north-south
  __pyx_tuple__843 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__843)) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__843);
  __Pyx_GIVEREF(__pyx_tuple__843);
  __pyx_tuple__844 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__844)) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__844);
  __Pyx_GIVEREF(__pyx_tuple__844);
  __pyx_tuple__845 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_144); if (unlikely(!__pyx_tuple__845)) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__845);
  __Pyx_GIVEREF(__pyx_tuple__845);
/* … */
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_tuple__843);
  __Pyx_GIVEREF(__pyx_tuple__843);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_tuple__843);
  __Pyx_INCREF(__pyx_tuple__844);
  __Pyx_GIVEREF(__pyx_tuple__844);
  PyList_SET_ITEM(__pyx_t_10, 1, __pyx_tuple__844);
  __Pyx_INCREF(__pyx_tuple__845);
  __Pyx_GIVEREF(__pyx_tuple__845);
  PyList_SET_ITEM(__pyx_t_10, 2, __pyx_tuple__845);
  __Pyx_INCREF(__pyx_tuple__846);
  __Pyx_GIVEREF(__pyx_tuple__846);
  PyList_SET_ITEM(__pyx_t_10, 3, __pyx_tuple__846);
  __pyx_tuple__846 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_144); if (unlikely(!__pyx_tuple__846)) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__846);
  __Pyx_GIVEREF(__pyx_tuple__846);
+2056:         [(0, 128), (16, 128), (16, 144), (0, 144)],  # south-ascending
  __pyx_tuple__847 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__847)) __PYX_ERR(0, 2056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__847);
  __Pyx_GIVEREF(__pyx_tuple__847);
  __pyx_tuple__848 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__848)) __PYX_ERR(0, 2056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__848);
  __Pyx_GIVEREF(__pyx_tuple__848);
  __pyx_tuple__849 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_144); if (unlikely(!__pyx_tuple__849)) __PYX_ERR(0, 2056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__849);
  __Pyx_GIVEREF(__pyx_tuple__849);
/* … */
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_tuple__847);
  __Pyx_GIVEREF(__pyx_tuple__847);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_tuple__847);
  __Pyx_INCREF(__pyx_tuple__848);
  __Pyx_GIVEREF(__pyx_tuple__848);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_tuple__848);
  __Pyx_INCREF(__pyx_tuple__849);
  __Pyx_GIVEREF(__pyx_tuple__849);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_tuple__849);
  __Pyx_INCREF(__pyx_tuple__850);
  __Pyx_GIVEREF(__pyx_tuple__850);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_tuple__850);
  __pyx_tuple__850 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_144); if (unlikely(!__pyx_tuple__850)) __PYX_ERR(0, 2056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__850);
  __Pyx_GIVEREF(__pyx_tuple__850);
+2057:         [(0, 128), (16, 128), (16, 144), (0, 144)],  # north-ascending
  __pyx_tuple__851 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__851)) __PYX_ERR(0, 2057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__851);
  __Pyx_GIVEREF(__pyx_tuple__851);
  __pyx_tuple__852 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__852)) __PYX_ERR(0, 2057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__852);
  __Pyx_GIVEREF(__pyx_tuple__852);
  __pyx_tuple__853 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_144); if (unlikely(!__pyx_tuple__853)) __PYX_ERR(0, 2057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__853);
  __Pyx_GIVEREF(__pyx_tuple__853);
/* … */
  __pyx_t_5 = PyList_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_tuple__851);
  __Pyx_GIVEREF(__pyx_tuple__851);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_tuple__851);
  __Pyx_INCREF(__pyx_tuple__852);
  __Pyx_GIVEREF(__pyx_tuple__852);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_tuple__852);
  __Pyx_INCREF(__pyx_tuple__853);
  __Pyx_GIVEREF(__pyx_tuple__853);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_tuple__853);
  __Pyx_INCREF(__pyx_tuple__854);
  __Pyx_GIVEREF(__pyx_tuple__854);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_tuple__854);
  __pyx_tuple__854 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_144); if (unlikely(!__pyx_tuple__854)) __PYX_ERR(0, 2057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__854);
  __Pyx_GIVEREF(__pyx_tuple__854);
+2058:         [(0, 128), (0, 144), (16, 144), (16, 128)],  # east-ascending
  __pyx_tuple__855 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__855)) __PYX_ERR(0, 2058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__855);
  __Pyx_GIVEREF(__pyx_tuple__855);
  __pyx_tuple__856 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_144); if (unlikely(!__pyx_tuple__856)) __PYX_ERR(0, 2058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__856);
  __Pyx_GIVEREF(__pyx_tuple__856);
  __pyx_tuple__857 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_144); if (unlikely(!__pyx_tuple__857)) __PYX_ERR(0, 2058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__857);
  __Pyx_GIVEREF(__pyx_tuple__857);
/* … */
  __pyx_t_15 = PyList_New(4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_INCREF(__pyx_tuple__855);
  __Pyx_GIVEREF(__pyx_tuple__855);
  PyList_SET_ITEM(__pyx_t_15, 0, __pyx_tuple__855);
  __Pyx_INCREF(__pyx_tuple__856);
  __Pyx_GIVEREF(__pyx_tuple__856);
  PyList_SET_ITEM(__pyx_t_15, 1, __pyx_tuple__856);
  __Pyx_INCREF(__pyx_tuple__857);
  __Pyx_GIVEREF(__pyx_tuple__857);
  PyList_SET_ITEM(__pyx_t_15, 2, __pyx_tuple__857);
  __Pyx_INCREF(__pyx_tuple__858);
  __Pyx_GIVEREF(__pyx_tuple__858);
  PyList_SET_ITEM(__pyx_t_15, 3, __pyx_tuple__858);
  __pyx_tuple__858 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__858)) __PYX_ERR(0, 2058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__858);
  __Pyx_GIVEREF(__pyx_tuple__858);
+2059:         [(0, 128), (0, 144), (16, 144), (16, 128)],  # west-ascending
  __pyx_tuple__859 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__859)) __PYX_ERR(0, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__859);
  __Pyx_GIVEREF(__pyx_tuple__859);
  __pyx_tuple__860 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_144); if (unlikely(!__pyx_tuple__860)) __PYX_ERR(0, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__860);
  __Pyx_GIVEREF(__pyx_tuple__860);
  __pyx_tuple__861 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_144); if (unlikely(!__pyx_tuple__861)) __PYX_ERR(0, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__861);
  __Pyx_GIVEREF(__pyx_tuple__861);
/* … */
  __pyx_t_21 = PyList_New(4); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_INCREF(__pyx_tuple__859);
  __Pyx_GIVEREF(__pyx_tuple__859);
  PyList_SET_ITEM(__pyx_t_21, 0, __pyx_tuple__859);
  __Pyx_INCREF(__pyx_tuple__860);
  __Pyx_GIVEREF(__pyx_tuple__860);
  PyList_SET_ITEM(__pyx_t_21, 1, __pyx_tuple__860);
  __Pyx_INCREF(__pyx_tuple__861);
  __Pyx_GIVEREF(__pyx_tuple__861);
  PyList_SET_ITEM(__pyx_t_21, 2, __pyx_tuple__861);
  __Pyx_INCREF(__pyx_tuple__862);
  __Pyx_GIVEREF(__pyx_tuple__862);
  PyList_SET_ITEM(__pyx_t_21, 3, __pyx_tuple__862);
  __pyx_tuple__862 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__862)) __PYX_ERR(0, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__862);
  __Pyx_GIVEREF(__pyx_tuple__862);
 2060: 
+2061:         [(0, 112), (0, 128), (16, 128), (16, 112)],  # northeast corner
  __pyx_tuple__863 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_112); if (unlikely(!__pyx_tuple__863)) __PYX_ERR(0, 2061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__863);
  __Pyx_GIVEREF(__pyx_tuple__863);
  __pyx_tuple__864 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__864)) __PYX_ERR(0, 2061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__864);
  __Pyx_GIVEREF(__pyx_tuple__864);
  __pyx_tuple__865 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__865)) __PYX_ERR(0, 2061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__865);
  __Pyx_GIVEREF(__pyx_tuple__865);
/* … */
  __pyx_t_12 = PyList_New(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_INCREF(__pyx_tuple__863);
  __Pyx_GIVEREF(__pyx_tuple__863);
  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_tuple__863);
  __Pyx_INCREF(__pyx_tuple__864);
  __Pyx_GIVEREF(__pyx_tuple__864);
  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_tuple__864);
  __Pyx_INCREF(__pyx_tuple__865);
  __Pyx_GIVEREF(__pyx_tuple__865);
  PyList_SET_ITEM(__pyx_t_12, 2, __pyx_tuple__865);
  __Pyx_INCREF(__pyx_tuple__866);
  __Pyx_GIVEREF(__pyx_tuple__866);
  PyList_SET_ITEM(__pyx_t_12, 3, __pyx_tuple__866);
  __pyx_tuple__866 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_112); if (unlikely(!__pyx_tuple__866)) __PYX_ERR(0, 2061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__866);
  __Pyx_GIVEREF(__pyx_tuple__866);
+2062:         [(0, 128), (16, 128), (16, 112), (0, 112)],  # southeast corner
  __pyx_tuple__867 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__867)) __PYX_ERR(0, 2062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__867);
  __Pyx_GIVEREF(__pyx_tuple__867);
  __pyx_tuple__868 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__868)) __PYX_ERR(0, 2062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__868);
  __Pyx_GIVEREF(__pyx_tuple__868);
  __pyx_tuple__869 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_112); if (unlikely(!__pyx_tuple__869)) __PYX_ERR(0, 2062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__869);
  __Pyx_GIVEREF(__pyx_tuple__869);
/* … */
  __pyx_t_8 = PyList_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_tuple__867);
  __Pyx_GIVEREF(__pyx_tuple__867);
  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_tuple__867);
  __Pyx_INCREF(__pyx_tuple__868);
  __Pyx_GIVEREF(__pyx_tuple__868);
  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_tuple__868);
  __Pyx_INCREF(__pyx_tuple__869);
  __Pyx_GIVEREF(__pyx_tuple__869);
  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_tuple__869);
  __Pyx_INCREF(__pyx_tuple__870);
  __Pyx_GIVEREF(__pyx_tuple__870);
  PyList_SET_ITEM(__pyx_t_8, 3, __pyx_tuple__870);
  __pyx_tuple__870 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_112); if (unlikely(!__pyx_tuple__870)) __PYX_ERR(0, 2062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__870);
  __Pyx_GIVEREF(__pyx_tuple__870);
+2063:         [(16, 128), (16, 112), (0, 112), (0, 128)],  # southwest corner
  __pyx_tuple__871 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__871)) __PYX_ERR(0, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__871);
  __Pyx_GIVEREF(__pyx_tuple__871);
  __pyx_tuple__872 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_112); if (unlikely(!__pyx_tuple__872)) __PYX_ERR(0, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__872);
  __Pyx_GIVEREF(__pyx_tuple__872);
  __pyx_tuple__873 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_112); if (unlikely(!__pyx_tuple__873)) __PYX_ERR(0, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__873);
  __Pyx_GIVEREF(__pyx_tuple__873);
/* … */
  __pyx_t_13 = PyList_New(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_INCREF(__pyx_tuple__871);
  __Pyx_GIVEREF(__pyx_tuple__871);
  PyList_SET_ITEM(__pyx_t_13, 0, __pyx_tuple__871);
  __Pyx_INCREF(__pyx_tuple__872);
  __Pyx_GIVEREF(__pyx_tuple__872);
  PyList_SET_ITEM(__pyx_t_13, 1, __pyx_tuple__872);
  __Pyx_INCREF(__pyx_tuple__873);
  __Pyx_GIVEREF(__pyx_tuple__873);
  PyList_SET_ITEM(__pyx_t_13, 2, __pyx_tuple__873);
  __Pyx_INCREF(__pyx_tuple__874);
  __Pyx_GIVEREF(__pyx_tuple__874);
  PyList_SET_ITEM(__pyx_t_13, 3, __pyx_tuple__874);
  __pyx_tuple__874 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__874)) __PYX_ERR(0, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__874);
  __Pyx_GIVEREF(__pyx_tuple__874);
+2064:         [(16, 112), (0, 112), (0, 128), (16, 128)],  # northwest corner
  __pyx_tuple__875 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_112); if (unlikely(!__pyx_tuple__875)) __PYX_ERR(0, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__875);
  __Pyx_GIVEREF(__pyx_tuple__875);
  __pyx_tuple__876 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_112); if (unlikely(!__pyx_tuple__876)) __PYX_ERR(0, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__876);
  __Pyx_GIVEREF(__pyx_tuple__876);
  __pyx_tuple__877 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_128); if (unlikely(!__pyx_tuple__877)) __PYX_ERR(0, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__877);
  __Pyx_GIVEREF(__pyx_tuple__877);
/* … */
  __pyx_t_11 = PyList_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(__pyx_tuple__875);
  __Pyx_GIVEREF(__pyx_tuple__875);
  PyList_SET_ITEM(__pyx_t_11, 0, __pyx_tuple__875);
  __Pyx_INCREF(__pyx_tuple__876);
  __Pyx_GIVEREF(__pyx_tuple__876);
  PyList_SET_ITEM(__pyx_t_11, 1, __pyx_tuple__876);
  __Pyx_INCREF(__pyx_tuple__877);
  __Pyx_GIVEREF(__pyx_tuple__877);
  PyList_SET_ITEM(__pyx_t_11, 2, __pyx_tuple__877);
  __Pyx_INCREF(__pyx_tuple__878);
  __Pyx_GIVEREF(__pyx_tuple__878);
  PyList_SET_ITEM(__pyx_t_11, 3, __pyx_tuple__878);
  __pyx_tuple__878 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_128); if (unlikely(!__pyx_tuple__878)) __PYX_ERR(0, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__878);
  __Pyx_GIVEREF(__pyx_tuple__878);
 2065: 
+2066:         [(0, 192), (0, 208), (16, 208), (16, 192)],  # unknown
  __pyx_tuple__879 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_192); if (unlikely(!__pyx_tuple__879)) __PYX_ERR(0, 2066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__879);
  __Pyx_GIVEREF(__pyx_tuple__879);
  __pyx_tuple__880 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_208); if (unlikely(!__pyx_tuple__880)) __PYX_ERR(0, 2066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__880);
  __Pyx_GIVEREF(__pyx_tuple__880);
  __pyx_tuple__881 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_208); if (unlikely(!__pyx_tuple__881)) __PYX_ERR(0, 2066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__881);
  __Pyx_GIVEREF(__pyx_tuple__881);
/* … */
  __pyx_t_18 = PyList_New(4); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_INCREF(__pyx_tuple__879);
  __Pyx_GIVEREF(__pyx_tuple__879);
  PyList_SET_ITEM(__pyx_t_18, 0, __pyx_tuple__879);
  __Pyx_INCREF(__pyx_tuple__880);
  __Pyx_GIVEREF(__pyx_tuple__880);
  PyList_SET_ITEM(__pyx_t_18, 1, __pyx_tuple__880);
  __Pyx_INCREF(__pyx_tuple__881);
  __Pyx_GIVEREF(__pyx_tuple__881);
  PyList_SET_ITEM(__pyx_t_18, 2, __pyx_tuple__881);
  __Pyx_INCREF(__pyx_tuple__882);
  __Pyx_GIVEREF(__pyx_tuple__882);
  PyList_SET_ITEM(__pyx_t_18, 3, __pyx_tuple__882);
  __pyx_tuple__882 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_192); if (unlikely(!__pyx_tuple__882)) __PYX_ERR(0, 2066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__882);
  __Pyx_GIVEREF(__pyx_tuple__882);
+2067:         [(0, 192), (0, 208), (16, 208), (16, 192)],  # unknown
  __pyx_tuple__883 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_192); if (unlikely(!__pyx_tuple__883)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__883);
  __Pyx_GIVEREF(__pyx_tuple__883);
  __pyx_tuple__884 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_208); if (unlikely(!__pyx_tuple__884)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__884);
  __Pyx_GIVEREF(__pyx_tuple__884);
  __pyx_tuple__885 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_208); if (unlikely(!__pyx_tuple__885)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__885);
  __Pyx_GIVEREF(__pyx_tuple__885);
/* … */
  __pyx_t_19 = PyList_New(4); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __Pyx_INCREF(__pyx_tuple__883);
  __Pyx_GIVEREF(__pyx_tuple__883);
  PyList_SET_ITEM(__pyx_t_19, 0, __pyx_tuple__883);
  __Pyx_INCREF(__pyx_tuple__884);
  __Pyx_GIVEREF(__pyx_tuple__884);
  PyList_SET_ITEM(__pyx_t_19, 1, __pyx_tuple__884);
  __Pyx_INCREF(__pyx_tuple__885);
  __Pyx_GIVEREF(__pyx_tuple__885);
  PyList_SET_ITEM(__pyx_t_19, 2, __pyx_tuple__885);
  __Pyx_INCREF(__pyx_tuple__886);
  __Pyx_GIVEREF(__pyx_tuple__886);
  PyList_SET_ITEM(__pyx_t_19, 3, __pyx_tuple__886);
  __pyx_tuple__886 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_192); if (unlikely(!__pyx_tuple__886)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__886);
  __Pyx_GIVEREF(__pyx_tuple__886);
+2068:         [(0, 192), (0, 208), (16, 208), (16, 192)],  # unknown
  __pyx_tuple__887 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_192); if (unlikely(!__pyx_tuple__887)) __PYX_ERR(0, 2068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__887);
  __Pyx_GIVEREF(__pyx_tuple__887);
  __pyx_tuple__888 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_208); if (unlikely(!__pyx_tuple__888)) __PYX_ERR(0, 2068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__888);
  __Pyx_GIVEREF(__pyx_tuple__888);
  __pyx_tuple__889 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_208); if (unlikely(!__pyx_tuple__889)) __PYX_ERR(0, 2068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__889);
  __Pyx_GIVEREF(__pyx_tuple__889);
/* … */
  __pyx_t_20 = PyList_New(4); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 2068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __Pyx_INCREF(__pyx_tuple__887);
  __Pyx_GIVEREF(__pyx_tuple__887);
  PyList_SET_ITEM(__pyx_t_20, 0, __pyx_tuple__887);
  __Pyx_INCREF(__pyx_tuple__888);
  __Pyx_GIVEREF(__pyx_tuple__888);
  PyList_SET_ITEM(__pyx_t_20, 1, __pyx_tuple__888);
  __Pyx_INCREF(__pyx_tuple__889);
  __Pyx_GIVEREF(__pyx_tuple__889);
  PyList_SET_ITEM(__pyx_t_20, 2, __pyx_tuple__889);
  __Pyx_INCREF(__pyx_tuple__890);
  __Pyx_GIVEREF(__pyx_tuple__890);
  PyList_SET_ITEM(__pyx_t_20, 3, __pyx_tuple__890);
  __pyx_tuple__890 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_192); if (unlikely(!__pyx_tuple__890)) __PYX_ERR(0, 2068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__890);
  __Pyx_GIVEREF(__pyx_tuple__890);
+2069:         [(0, 192), (0, 208), (16, 208), (16, 192)],  # unknown
  __pyx_tuple__891 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_192); if (unlikely(!__pyx_tuple__891)) __PYX_ERR(0, 2069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__891);
  __Pyx_GIVEREF(__pyx_tuple__891);
  __pyx_tuple__892 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_208); if (unlikely(!__pyx_tuple__892)) __PYX_ERR(0, 2069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__892);
  __Pyx_GIVEREF(__pyx_tuple__892);
  __pyx_tuple__893 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_208); if (unlikely(!__pyx_tuple__893)) __PYX_ERR(0, 2069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__893);
  __Pyx_GIVEREF(__pyx_tuple__893);
/* … */
  __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_tuple__891);
  __Pyx_GIVEREF(__pyx_tuple__891);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_tuple__891);
  __Pyx_INCREF(__pyx_tuple__892);
  __Pyx_GIVEREF(__pyx_tuple__892);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_tuple__892);
  __Pyx_INCREF(__pyx_tuple__893);
  __Pyx_GIVEREF(__pyx_tuple__893);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_tuple__893);
  __Pyx_INCREF(__pyx_tuple__894);
  __Pyx_GIVEREF(__pyx_tuple__894);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_tuple__894);
  __pyx_tuple__894 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_192); if (unlikely(!__pyx_tuple__894)) __PYX_ERR(0, 2069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__894);
  __Pyx_GIVEREF(__pyx_tuple__894);
+2070:         [(0, 192), (0, 208), (16, 208), (16, 192)],  # unknown
  __pyx_tuple__895 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_192); if (unlikely(!__pyx_tuple__895)) __PYX_ERR(0, 2070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__895);
  __Pyx_GIVEREF(__pyx_tuple__895);
  __pyx_tuple__896 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_208); if (unlikely(!__pyx_tuple__896)) __PYX_ERR(0, 2070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__896);
  __Pyx_GIVEREF(__pyx_tuple__896);
  __pyx_tuple__897 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_208); if (unlikely(!__pyx_tuple__897)) __PYX_ERR(0, 2070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__897);
  __Pyx_GIVEREF(__pyx_tuple__897);
/* … */
  __pyx_t_22 = PyList_New(4); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __Pyx_INCREF(__pyx_tuple__895);
  __Pyx_GIVEREF(__pyx_tuple__895);
  PyList_SET_ITEM(__pyx_t_22, 0, __pyx_tuple__895);
  __Pyx_INCREF(__pyx_tuple__896);
  __Pyx_GIVEREF(__pyx_tuple__896);
  PyList_SET_ITEM(__pyx_t_22, 1, __pyx_tuple__896);
  __Pyx_INCREF(__pyx_tuple__897);
  __Pyx_GIVEREF(__pyx_tuple__897);
  PyList_SET_ITEM(__pyx_t_22, 2, __pyx_tuple__897);
  __Pyx_INCREF(__pyx_tuple__898);
  __Pyx_GIVEREF(__pyx_tuple__898);
  PyList_SET_ITEM(__pyx_t_22, 3, __pyx_tuple__898);
  __pyx_tuple__898 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_192); if (unlikely(!__pyx_tuple__898)) __PYX_ERR(0, 2070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__898);
  __Pyx_GIVEREF(__pyx_tuple__898);
+2071:         [(0, 192), (0, 208), (16, 208), (16, 192)],  # unknown
  __pyx_tuple__899 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_192); if (unlikely(!__pyx_tuple__899)) __PYX_ERR(0, 2071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__899);
  __Pyx_GIVEREF(__pyx_tuple__899);
  __pyx_tuple__900 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_208); if (unlikely(!__pyx_tuple__900)) __PYX_ERR(0, 2071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__900);
  __Pyx_GIVEREF(__pyx_tuple__900);
  __pyx_tuple__901 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_208); if (unlikely(!__pyx_tuple__901)) __PYX_ERR(0, 2071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__901);
  __Pyx_GIVEREF(__pyx_tuple__901);
/* … */
  __pyx_t_4 = PyList_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_tuple__899);
  __Pyx_GIVEREF(__pyx_tuple__899);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_tuple__899);
  __Pyx_INCREF(__pyx_tuple__900);
  __Pyx_GIVEREF(__pyx_tuple__900);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_tuple__900);
  __Pyx_INCREF(__pyx_tuple__901);
  __Pyx_GIVEREF(__pyx_tuple__901);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_tuple__901);
  __Pyx_INCREF(__pyx_tuple__902);
  __Pyx_GIVEREF(__pyx_tuple__902);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_tuple__902);
  __pyx_tuple__902 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_192); if (unlikely(!__pyx_tuple__902)) __PYX_ERR(0, 2071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__902);
  __Pyx_GIVEREF(__pyx_tuple__902);
 2072: 
+2073:     ], dtype='float32')
  __pyx_t_24 = PyDict_New(); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  if (PyDict_SetItem(__pyx_t_24, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
+2074:     railTextures -= alphaMaterials.blockTextures[alphaMaterials.Rail.ID, 0, 0]
  __pyx_t_22 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_railTextures);
  if (unlikely(!__pyx_t_22)) {
    PyErr_Clear();
    __pyx_t_22 = __Pyx_GetModuleGlobalName(__pyx_n_s_railTextures);
  }
  if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_24, __pyx_n_s_blockTextures); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_24, __pyx_n_s_Rail); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_ID); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_23 = PyTuple_New(3); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_GIVEREF(__pyx_t_24);
  PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_24);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_23, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_23, 2, __pyx_int_0);
  __pyx_t_24 = 0;
  __pyx_t_24 = PyObject_GetItem(__pyx_t_4, __pyx_t_23); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_23 = PyNumber_InPlaceSubtract(__pyx_t_22, __pyx_t_24); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_railTextures, __pyx_t_23) < 0) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
 2075: 
+2076:     railOffsets = numpy.array([
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_array); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
/* … */
  __pyx_t_14 = PyList_New(16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_23);
  PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_23);
  __Pyx_GIVEREF(__pyx_t_22);
  PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_22);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_14, 3, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_20);
  PyList_SET_ITEM(__pyx_t_14, 4, __pyx_t_20);
  __Pyx_GIVEREF(__pyx_t_19);
  PyList_SET_ITEM(__pyx_t_14, 5, __pyx_t_19);
  __Pyx_GIVEREF(__pyx_t_18);
  PyList_SET_ITEM(__pyx_t_14, 6, __pyx_t_18);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_14, 7, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_14, 8, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_14, 9, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_14, 10, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_21);
  PyList_SET_ITEM(__pyx_t_14, 11, __pyx_t_21);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_14, 12, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_14, 13, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_14, 14, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_14, 15, __pyx_t_10);
  __pyx_t_23 = 0;
  __pyx_t_22 = 0;
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
  __pyx_t_20 = 0;
  __pyx_t_19 = 0;
  __pyx_t_18 = 0;
  __pyx_t_11 = 0;
  __pyx_t_13 = 0;
  __pyx_t_8 = 0;
  __pyx_t_12 = 0;
  __pyx_t_21 = 0;
  __pyx_t_15 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_10 = 0;
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_14);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_14);
  __pyx_t_14 = 0;
/* … */
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_t_10, __pyx_t_14); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_railOffsets, __pyx_t_6) < 0) __PYX_ERR(0, 2076, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2077:         [0, 0, 0, 0],
  __pyx_t_23 = PyList_New(4); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2077, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_23, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_23, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_23, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_23, 3, __pyx_int_0);
+2078:         [0, 0, 0, 0],
  __pyx_t_22 = PyList_New(4); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2078, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_22, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_22, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_22, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_22, 3, __pyx_int_0);
 2079: 
+2080:         [0, 0, 1, 1],  # south-ascending
  __pyx_t_4 = PyList_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_int_1);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyList_SET_ITEM(__pyx_t_4, 3, __pyx_int_1);
+2081:         [1, 1, 0, 0],  # north-ascending
  __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_int_1);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_int_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_int_0);
+2082:         [1, 0, 0, 1],  # east-ascending
  __pyx_t_20 = PyList_New(4); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyList_SET_ITEM(__pyx_t_20, 0, __pyx_int_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_20, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_20, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyList_SET_ITEM(__pyx_t_20, 3, __pyx_int_1);
+2083:         [0, 1, 1, 0],  # west-ascending
  __pyx_t_19 = PyList_New(4); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_19, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyList_SET_ITEM(__pyx_t_19, 1, __pyx_int_1);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyList_SET_ITEM(__pyx_t_19, 2, __pyx_int_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_19, 3, __pyx_int_0);
 2084: 
+2085:         [0, 0, 0, 0],
  __pyx_t_18 = PyList_New(4); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_18, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_18, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_18, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_18, 3, __pyx_int_0);
+2086:         [0, 0, 0, 0],
  __pyx_t_11 = PyList_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_11, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_11, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_11, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_11, 3, __pyx_int_0);
+2087:         [0, 0, 0, 0],
  __pyx_t_13 = PyList_New(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_13, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_13, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_13, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_13, 3, __pyx_int_0);
+2088:         [0, 0, 0, 0],
  __pyx_t_8 = PyList_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_8, 3, __pyx_int_0);
 2089: 
+2090:         [0, 0, 0, 0],
  __pyx_t_12 = PyList_New(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_12, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_12, 3, __pyx_int_0);
+2091:         [0, 0, 0, 0],
  __pyx_t_21 = PyList_New(4); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2091, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_21, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_21, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_21, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_21, 3, __pyx_int_0);
+2092:         [0, 0, 0, 0],
  __pyx_t_15 = PyList_New(4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_15, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_15, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_15, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_15, 3, __pyx_int_0);
+2093:         [0, 0, 0, 0],
  __pyx_t_5 = PyList_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_int_0);
+2094:         [0, 0, 0, 0],
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_int_0);
+2095:         [0, 0, 0, 0],
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_10, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_10, 2, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_10, 3, __pyx_int_0);
 2096: 
+2097:     ], dtype='float32')
  __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 2097, __pyx_L1_error)
 2098: 
+2099:     def makeRailVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17RailBlockRenderer_3makeRailVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17RailBlockRenderer_3makeRailVertices = {"makeRailVertices", (PyCFunction)__pyx_pw_9_renderer_17RailBlockRenderer_3makeRailVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17RailBlockRenderer_3makeRailVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeRailVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRailVertices", 1, 7, 7, 1); __PYX_ERR(0, 2099, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRailVertices", 1, 7, 7, 2); __PYX_ERR(0, 2099, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRailVertices", 1, 7, 7, 3); __PYX_ERR(0, 2099, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRailVertices", 1, 7, 7, 4); __PYX_ERR(0, 2099, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRailVertices", 1, 7, 7, 5); __PYX_ERR(0, 2099, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRailVertices", 1, 7, 7, 6); __PYX_ERR(0, 2099, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeRailVertices") < 0)) __PYX_ERR(0, 2099, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeRailVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2099, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.RailBlockRenderer.makeRailVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17RailBlockRenderer_2makeRailVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17RailBlockRenderer_2makeRailVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_25_makeRailVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeRailVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_25_makeRailVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_25_makeRailVertices(__pyx_ptype_9_renderer___pyx_scope_struct_25_makeRailVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_17RailBlockRenderer_4generator18, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeRailVertices, __pyx_n_s_RailBlockRenderer_makeRailVertic, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2099, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.RailBlockRenderer.makeRailVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_17RailBlockRenderer_4generator18(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2099, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("makeRailVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__903 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_direction, __pyx_n_s_blockIndices, __pyx_n_s_bdata, __pyx_n_s_railBlocks, __pyx_n_s_tex, __pyx_n_s_vertexArray, __pyx_n_s_blockLight); if (unlikely(!__pyx_tuple__903)) __PYX_ERR(0, 2099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__903);
  __Pyx_GIVEREF(__pyx_tuple__903);
/* … */
  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17RailBlockRenderer_3makeRailVertices, 0, __pyx_n_s_RailBlockRenderer_makeRailVertic, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__904)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeRailVertices, __pyx_t_6) < 0) __PYX_ERR(0, 2099, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_codeobj__904 = (PyObject*)__Pyx_PyCode_New(7, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__903, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeRailVertices, 2099, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__904)) __PYX_ERR(0, 2099, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_25_makeRailVertices {
  PyObject_HEAD
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_bdata;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockLight;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_railBlocks;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_tex;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
};

+2100:         direction = pymclevel.faces.FaceYIncreasing
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_direction = __pyx_t_1;
  __pyx_t_1 = 0;
+2101:         blockIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blockIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2102:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2102, __pyx_L1_error)
 2103: 
+2104:         bdata = blockData[blockIndices]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_bdata = __pyx_t_1;
  __pyx_t_1 = 0;
+2105:         railBlocks = blocks[blockIndices]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_railBlocks = __pyx_t_1;
  __pyx_t_1 = 0;
+2106:         tex = texMap(railBlocks, bdata, pymclevel.faces.FaceYIncreasing)[:, numpy.newaxis, :]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __pyx_t_4 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_railBlocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_railBlocks);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_railBlocks);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_bdata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_bdata);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_bdata);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__380 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__380)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__380);
  __Pyx_GIVEREF(__pyx_slice__380);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_slice__380);
  __Pyx_GIVEREF(__pyx_slice__380);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_slice__380);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_slice__381);
  __Pyx_GIVEREF(__pyx_slice__381);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_slice__381);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_tex = __pyx_t_6;
  __pyx_t_6 = 0;
  __pyx_slice__381 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__381)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__381);
  __Pyx_GIVEREF(__pyx_slice__381);
 2107: 
 2108:         # disable 'powered' or 'pressed' bit for powered and detector rails
+2109:         bdata[railBlocks != alphaMaterials.Rail.ID] = bdata[railBlocks != alphaMaterials.Rail.ID].astype(int) & ~0x8
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Rail); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_railBlocks, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_bdata, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)(&PyInt_Type))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_INCREF(((PyObject *)(&PyInt_Type)));
    __Pyx_GIVEREF(((PyObject *)(&PyInt_Type)));
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject *)(&PyInt_Type)));
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_long((~0x8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_And(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Rail); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_railBlocks, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_bdata, __pyx_t_6, __pyx_t_2) < 0)) __PYX_ERR(0, 2109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 2110: 
+2111:         vertexArray = self.makeTemplate(direction, blockIndices)
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_direction);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_blockIndices);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_vertexArray = __pyx_t_2;
  __pyx_t_2 = 0;
+2112:         if not len(vertexArray):
  __pyx_t_5 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 2112, __pyx_L1_error)
  __pyx_t_7 = ((!(__pyx_t_5 != 0)) != 0);
  if (__pyx_t_7) {
/* … */
  }
+2113:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;
 2114: 
+2115:         vertexArray[_ST] = self.railTextures[bdata]
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_railTextures); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = PyObject_GetItem(__pyx_t_2, __pyx_cur_scope->__pyx_v_bdata); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_2, __pyx_t_6) < 0)) __PYX_ERR(0, 2115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2116:         vertexArray[_ST] += tex
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_cur_scope->__pyx_v_tex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_6, __pyx_t_4) < 0)) __PYX_ERR(0, 2116, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 2117: 
+2118:         vertexArray[_XYZ][..., 1] -= 0.9
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_INCREF(__pyx_tuple__382);
  __pyx_t_8 = __pyx_tuple__382;
  __pyx_t_6 = PyObject_GetItem(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_PyFloat_SubtractObjC(__pyx_t_6, __pyx_float_0_9, 0.9, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_8, __pyx_t_2) < 0)) __PYX_ERR(0, 2118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__382 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__382)) __PYX_ERR(0, 2118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__382);
  __Pyx_GIVEREF(__pyx_tuple__382);
+2119:         vertexArray[_XYZ][..., 1] += self.railOffsets[bdata]
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_INCREF(__pyx_tuple__383);
  __pyx_t_8 = __pyx_tuple__383;
  __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_railOffsets); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_6, __pyx_cur_scope->__pyx_v_bdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_8, __pyx_t_6) < 0)) __PYX_ERR(0, 2119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__383 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__383)) __PYX_ERR(0, 2119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__383);
  __Pyx_GIVEREF(__pyx_tuple__383);
 2120: 
+2121:         blockLight = areaBlockLights[1:-1, 1:-1, 1:-1]
  __pyx_slice__384 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__384)) __PYX_ERR(0, 2121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__384);
  __Pyx_GIVEREF(__pyx_slice__384);
  __pyx_slice__385 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__385)) __PYX_ERR(0, 2121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__385);
  __Pyx_GIVEREF(__pyx_slice__385);
  __pyx_slice__386 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__386)) __PYX_ERR(0, 2121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__386);
  __Pyx_GIVEREF(__pyx_slice__386);
/* … */
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_tuple__387); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_blockLight = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_tuple__387 = PyTuple_Pack(3, __pyx_slice__384, __pyx_slice__385, __pyx_slice__386); if (unlikely(!__pyx_tuple__387)) __PYX_ERR(0, 2121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__387);
  __Pyx_GIVEREF(__pyx_tuple__387);
 2122: 
+2123:         vertexArray.view('uint8')[_RGB] *= blockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__388, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_10);
  __pyx_t_9 = 0;
  __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__388 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__388)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__388);
  __Pyx_GIVEREF(__pyx_tuple__388);
+2124:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L6_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2124, __pyx_L1_error)
+2125:         self.vertexArrays = [vertexArray]
  __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_vertexArray);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_vertexArray);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_vertexArray);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_t_6) < 0) __PYX_ERR(0, 2125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 2126: 
+2127:     makeVertices = makeRailVertices
  __pyx_t_6 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeRailVertices);
  if (unlikely(!__pyx_t_6)) {
    PyErr_Clear();
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeRailVertices);
  }
  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_6) < 0) __PYX_ERR(0, 2127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 2128: 
 2129: 
+2130: class LadderBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_LadderBlockRenderer, __pyx_n_s_LadderBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_14 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_LadderBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LadderBlockRenderer, __pyx_t_14) < 0) __PYX_ERR(0, 2130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2131:     @classmethod
  __pyx_t_14 = __Pyx_Method_ClassMethod(__pyx_t_6); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_14) < 0) __PYX_ERR(0, 2132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2132:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_19LadderBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_19LadderBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_19LadderBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_19LadderBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2132, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2132, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2132, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.LadderBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_19LadderBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_19LadderBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.LadderBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_19LadderBlockRenderer_4generator19(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__905 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__905)) __PYX_ERR(0, 2132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__905);
  __Pyx_GIVEREF(__pyx_tuple__905);
/* … */
  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_19LadderBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_LadderBlockRenderer_getBlocktype, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__906)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_codeobj__906 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__905, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__906)) __PYX_ERR(0, 2132, __pyx_L1_error)
+2133:         return [mats["minecraft:ladder"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_ladder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2134: 
+2135:     ladderOffsets = numpy.array([
  __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_t_12 = PyList_New(6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_14);
  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_24);
  PyList_SET_ITEM(__pyx_t_12, 2, __pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_12, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_12, 4, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_21);
  PyList_SET_ITEM(__pyx_t_12, 5, __pyx_t_21);
  __pyx_t_14 = 0;
  __pyx_t_10 = 0;
  __pyx_t_24 = 0;
  __pyx_t_5 = 0;
  __pyx_t_15 = 0;
  __pyx_t_21 = 0;
/* … */
  __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_21);
  PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_21);
  __pyx_t_21 = 0;
/* … */
  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_15, __pyx_t_21); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ladderOffsets, __pyx_t_12) < 0) __PYX_ERR(0, 2135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+2136:                                     [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
  __pyx_tuple__907 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__907)) __PYX_ERR(0, 2136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__907);
  __Pyx_GIVEREF(__pyx_tuple__907);
  __pyx_tuple__908 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__908)) __PYX_ERR(0, 2136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__908);
  __Pyx_GIVEREF(__pyx_tuple__908);
  __pyx_tuple__909 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__909)) __PYX_ERR(0, 2136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__909);
  __Pyx_GIVEREF(__pyx_tuple__909);
/* … */
  __pyx_t_14 = PyList_New(4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_INCREF(__pyx_tuple__907);
  __Pyx_GIVEREF(__pyx_tuple__907);
  PyList_SET_ITEM(__pyx_t_14, 0, __pyx_tuple__907);
  __Pyx_INCREF(__pyx_tuple__908);
  __Pyx_GIVEREF(__pyx_tuple__908);
  PyList_SET_ITEM(__pyx_t_14, 1, __pyx_tuple__908);
  __Pyx_INCREF(__pyx_tuple__909);
  __Pyx_GIVEREF(__pyx_tuple__909);
  PyList_SET_ITEM(__pyx_t_14, 2, __pyx_tuple__909);
  __Pyx_INCREF(__pyx_tuple__910);
  __Pyx_GIVEREF(__pyx_tuple__910);
  PyList_SET_ITEM(__pyx_t_14, 3, __pyx_tuple__910);
  __pyx_tuple__910 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__910)) __PYX_ERR(0, 2136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__910);
  __Pyx_GIVEREF(__pyx_tuple__910);
+2137:                                     [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
  __pyx_tuple__911 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__911)) __PYX_ERR(0, 2137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__911);
  __Pyx_GIVEREF(__pyx_tuple__911);
  __pyx_tuple__912 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__912)) __PYX_ERR(0, 2137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__912);
  __Pyx_GIVEREF(__pyx_tuple__912);
  __pyx_tuple__913 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__913)) __PYX_ERR(0, 2137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__913);
  __Pyx_GIVEREF(__pyx_tuple__913);
/* … */
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_tuple__911);
  __Pyx_GIVEREF(__pyx_tuple__911);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_tuple__911);
  __Pyx_INCREF(__pyx_tuple__912);
  __Pyx_GIVEREF(__pyx_tuple__912);
  PyList_SET_ITEM(__pyx_t_10, 1, __pyx_tuple__912);
  __Pyx_INCREF(__pyx_tuple__913);
  __Pyx_GIVEREF(__pyx_tuple__913);
  PyList_SET_ITEM(__pyx_t_10, 2, __pyx_tuple__913);
  __Pyx_INCREF(__pyx_tuple__914);
  __Pyx_GIVEREF(__pyx_tuple__914);
  PyList_SET_ITEM(__pyx_t_10, 3, __pyx_tuple__914);
  __pyx_tuple__914 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__914)) __PYX_ERR(0, 2137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__914);
  __Pyx_GIVEREF(__pyx_tuple__914);
 2138: 
+2139:                                     [(0, -1, 0.9), (0, 0, -0.1), (0, 0, -0.1), (0, -1, 0.9)],  # facing east
  __pyx_tuple__915 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_neg_1, __pyx_float_0_9); if (unlikely(!__pyx_tuple__915)) __PYX_ERR(0, 2139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__915);
  __Pyx_GIVEREF(__pyx_tuple__915);
  __pyx_tuple__916 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_float_neg_0_1); if (unlikely(!__pyx_tuple__916)) __PYX_ERR(0, 2139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__916);
  __Pyx_GIVEREF(__pyx_tuple__916);
  __pyx_tuple__917 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_float_neg_0_1); if (unlikely(!__pyx_tuple__917)) __PYX_ERR(0, 2139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__917);
  __Pyx_GIVEREF(__pyx_tuple__917);
/* … */
  __pyx_t_24 = PyList_New(4); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_INCREF(__pyx_tuple__915);
  __Pyx_GIVEREF(__pyx_tuple__915);
  PyList_SET_ITEM(__pyx_t_24, 0, __pyx_tuple__915);
  __Pyx_INCREF(__pyx_tuple__916);
  __Pyx_GIVEREF(__pyx_tuple__916);
  PyList_SET_ITEM(__pyx_t_24, 1, __pyx_tuple__916);
  __Pyx_INCREF(__pyx_tuple__917);
  __Pyx_GIVEREF(__pyx_tuple__917);
  PyList_SET_ITEM(__pyx_t_24, 2, __pyx_tuple__917);
  __Pyx_INCREF(__pyx_tuple__918);
  __Pyx_GIVEREF(__pyx_tuple__918);
  PyList_SET_ITEM(__pyx_t_24, 3, __pyx_tuple__918);
  __pyx_tuple__918 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_neg_1, __pyx_float_0_9); if (unlikely(!__pyx_tuple__918)) __PYX_ERR(0, 2139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__918);
  __Pyx_GIVEREF(__pyx_tuple__918);
+2140:                                     [(0, 0, 0.1), (0, -1, -.9), (0, -1, -.9), (0, 0, 0.1)],  # facing west
  __pyx_tuple__919 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_float_0_1); if (unlikely(!__pyx_tuple__919)) __PYX_ERR(0, 2140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__919);
  __Pyx_GIVEREF(__pyx_tuple__919);
  __pyx_tuple__920 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_neg_1, __pyx_float_neg__9); if (unlikely(!__pyx_tuple__920)) __PYX_ERR(0, 2140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__920);
  __Pyx_GIVEREF(__pyx_tuple__920);
  __pyx_tuple__921 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_neg_1, __pyx_float_neg__9); if (unlikely(!__pyx_tuple__921)) __PYX_ERR(0, 2140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__921);
  __Pyx_GIVEREF(__pyx_tuple__921);
/* … */
  __pyx_t_5 = PyList_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_tuple__919);
  __Pyx_GIVEREF(__pyx_tuple__919);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_tuple__919);
  __Pyx_INCREF(__pyx_tuple__920);
  __Pyx_GIVEREF(__pyx_tuple__920);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_tuple__920);
  __Pyx_INCREF(__pyx_tuple__921);
  __Pyx_GIVEREF(__pyx_tuple__921);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_tuple__921);
  __Pyx_INCREF(__pyx_tuple__922);
  __Pyx_GIVEREF(__pyx_tuple__922);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_tuple__922);
  __pyx_tuple__922 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_float_0_1); if (unlikely(!__pyx_tuple__922)) __PYX_ERR(0, 2140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__922);
  __Pyx_GIVEREF(__pyx_tuple__922);
+2141:                                     [(.9, -1, 0), (.9, -1, 0), (-.1, 0, 0), (-.1, 0, 0)],  # north
  __pyx_tuple__923 = PyTuple_Pack(3, __pyx_float__9, __pyx_int_neg_1, __pyx_int_0); if (unlikely(!__pyx_tuple__923)) __PYX_ERR(0, 2141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__923);
  __Pyx_GIVEREF(__pyx_tuple__923);
  __pyx_tuple__924 = PyTuple_Pack(3, __pyx_float__9, __pyx_int_neg_1, __pyx_int_0); if (unlikely(!__pyx_tuple__924)) __PYX_ERR(0, 2141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__924);
  __Pyx_GIVEREF(__pyx_tuple__924);
  __pyx_tuple__925 = PyTuple_Pack(3, __pyx_float_neg__1, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__925)) __PYX_ERR(0, 2141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__925);
  __Pyx_GIVEREF(__pyx_tuple__925);
/* … */
  __pyx_t_15 = PyList_New(4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_INCREF(__pyx_tuple__923);
  __Pyx_GIVEREF(__pyx_tuple__923);
  PyList_SET_ITEM(__pyx_t_15, 0, __pyx_tuple__923);
  __Pyx_INCREF(__pyx_tuple__924);
  __Pyx_GIVEREF(__pyx_tuple__924);
  PyList_SET_ITEM(__pyx_t_15, 1, __pyx_tuple__924);
  __Pyx_INCREF(__pyx_tuple__925);
  __Pyx_GIVEREF(__pyx_tuple__925);
  PyList_SET_ITEM(__pyx_t_15, 2, __pyx_tuple__925);
  __Pyx_INCREF(__pyx_tuple__926);
  __Pyx_GIVEREF(__pyx_tuple__926);
  PyList_SET_ITEM(__pyx_t_15, 3, __pyx_tuple__926);
  __pyx_tuple__926 = PyTuple_Pack(3, __pyx_float_neg__1, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__926)) __PYX_ERR(0, 2141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__926);
  __Pyx_GIVEREF(__pyx_tuple__926);
+2142:                                     [(0.1, 0, 0), (0.1, 0, 0), (-.9, -1, 0), (-.9, -1, 0)],  # south
  __pyx_tuple__927 = PyTuple_Pack(3, __pyx_float_0_1, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__927)) __PYX_ERR(0, 2142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__927);
  __Pyx_GIVEREF(__pyx_tuple__927);
  __pyx_tuple__928 = PyTuple_Pack(3, __pyx_float_0_1, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__928)) __PYX_ERR(0, 2142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__928);
  __Pyx_GIVEREF(__pyx_tuple__928);
  __pyx_tuple__929 = PyTuple_Pack(3, __pyx_float_neg__9, __pyx_int_neg_1, __pyx_int_0); if (unlikely(!__pyx_tuple__929)) __PYX_ERR(0, 2142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__929);
  __Pyx_GIVEREF(__pyx_tuple__929);
/* … */
  __pyx_t_21 = PyList_New(4); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_INCREF(__pyx_tuple__927);
  __Pyx_GIVEREF(__pyx_tuple__927);
  PyList_SET_ITEM(__pyx_t_21, 0, __pyx_tuple__927);
  __Pyx_INCREF(__pyx_tuple__928);
  __Pyx_GIVEREF(__pyx_tuple__928);
  PyList_SET_ITEM(__pyx_t_21, 1, __pyx_tuple__928);
  __Pyx_INCREF(__pyx_tuple__929);
  __Pyx_GIVEREF(__pyx_tuple__929);
  PyList_SET_ITEM(__pyx_t_21, 2, __pyx_tuple__929);
  __Pyx_INCREF(__pyx_tuple__930);
  __Pyx_GIVEREF(__pyx_tuple__930);
  PyList_SET_ITEM(__pyx_t_21, 3, __pyx_tuple__930);
  __pyx_tuple__930 = PyTuple_Pack(3, __pyx_float_neg__9, __pyx_int_neg_1, __pyx_int_0); if (unlikely(!__pyx_tuple__930)) __PYX_ERR(0, 2142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__930);
  __Pyx_GIVEREF(__pyx_tuple__930);
 2143: 
+2144:                                 ] + [[(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)]] * 10, dtype='float32')
  __pyx_tuple__931 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__931)) __PYX_ERR(0, 2144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__931);
  __Pyx_GIVEREF(__pyx_tuple__931);
  __pyx_tuple__932 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__932)) __PYX_ERR(0, 2144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__932);
  __Pyx_GIVEREF(__pyx_tuple__932);
  __pyx_tuple__933 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__933)) __PYX_ERR(0, 2144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__933);
  __Pyx_GIVEREF(__pyx_tuple__933);
/* … */
  __pyx_t_21 = PyList_New(4); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_INCREF(__pyx_tuple__931);
  __Pyx_GIVEREF(__pyx_tuple__931);
  PyList_SET_ITEM(__pyx_t_21, 0, __pyx_tuple__931);
  __Pyx_INCREF(__pyx_tuple__932);
  __Pyx_GIVEREF(__pyx_tuple__932);
  PyList_SET_ITEM(__pyx_t_21, 1, __pyx_tuple__932);
  __Pyx_INCREF(__pyx_tuple__933);
  __Pyx_GIVEREF(__pyx_tuple__933);
  PyList_SET_ITEM(__pyx_t_21, 2, __pyx_tuple__933);
  __Pyx_INCREF(__pyx_tuple__934);
  __Pyx_GIVEREF(__pyx_tuple__934);
  PyList_SET_ITEM(__pyx_t_21, 3, __pyx_tuple__934);
  __pyx_t_15 = PyList_New(1 * 10); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 10; __pyx_temp++) {
      __Pyx_INCREF(__pyx_t_21);
      __Pyx_GIVEREF(__pyx_t_21);
      PyList_SET_ITEM(__pyx_t_15, __pyx_temp, __pyx_t_21);
    }
  }
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  __pyx_t_21 = PyNumber_Add(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
/* … */
  __pyx_t_21 = PyDict_New(); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  if (PyDict_SetItem(__pyx_t_21, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 2144, __pyx_L1_error)
  __pyx_tuple__934 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__934)) __PYX_ERR(0, 2144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__934);
  __Pyx_GIVEREF(__pyx_tuple__934);
 2145: 
+2146:     ladderTextures = numpy.array([
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_array); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_t_14 = PyList_New(6); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_14, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_24);
  PyList_SET_ITEM(__pyx_t_14, 4, __pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_14, 5, __pyx_t_10);
  __pyx_t_12 = 0;
  __pyx_t_15 = 0;
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
  __pyx_t_24 = 0;
  __pyx_t_10 = 0;
/* … */
  __pyx_t_24 = PyTuple_New(1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_10);
  __pyx_t_10 = 0;
/* … */
  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_21, __pyx_t_24, __pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ladderTextures, __pyx_t_14) < 0) __PYX_ERR(0, 2146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2147:                                      [(0, 192), (0, 208), (16, 208), (16, 192)],  # unknown
  __pyx_tuple__935 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_192); if (unlikely(!__pyx_tuple__935)) __PYX_ERR(0, 2147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__935);
  __Pyx_GIVEREF(__pyx_tuple__935);
  __pyx_tuple__936 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_208); if (unlikely(!__pyx_tuple__936)) __PYX_ERR(0, 2147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__936);
  __Pyx_GIVEREF(__pyx_tuple__936);
  __pyx_tuple__937 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_208); if (unlikely(!__pyx_tuple__937)) __PYX_ERR(0, 2147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__937);
  __Pyx_GIVEREF(__pyx_tuple__937);
/* … */
  __pyx_t_12 = PyList_New(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_INCREF(__pyx_tuple__935);
  __Pyx_GIVEREF(__pyx_tuple__935);
  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_tuple__935);
  __Pyx_INCREF(__pyx_tuple__936);
  __Pyx_GIVEREF(__pyx_tuple__936);
  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_tuple__936);
  __Pyx_INCREF(__pyx_tuple__937);
  __Pyx_GIVEREF(__pyx_tuple__937);
  PyList_SET_ITEM(__pyx_t_12, 2, __pyx_tuple__937);
  __Pyx_INCREF(__pyx_tuple__938);
  __Pyx_GIVEREF(__pyx_tuple__938);
  PyList_SET_ITEM(__pyx_t_12, 3, __pyx_tuple__938);
  __pyx_tuple__938 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_192); if (unlikely(!__pyx_tuple__938)) __PYX_ERR(0, 2147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__938);
  __Pyx_GIVEREF(__pyx_tuple__938);
+2148:                                      [(0, 192), (0, 208), (16, 208), (16, 192)],  # unknown
  __pyx_tuple__939 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_192); if (unlikely(!__pyx_tuple__939)) __PYX_ERR(0, 2148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__939);
  __Pyx_GIVEREF(__pyx_tuple__939);
  __pyx_tuple__940 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_208); if (unlikely(!__pyx_tuple__940)) __PYX_ERR(0, 2148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__940);
  __Pyx_GIVEREF(__pyx_tuple__940);
  __pyx_tuple__941 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_208); if (unlikely(!__pyx_tuple__941)) __PYX_ERR(0, 2148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__941);
  __Pyx_GIVEREF(__pyx_tuple__941);
/* … */
  __pyx_t_15 = PyList_New(4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_INCREF(__pyx_tuple__939);
  __Pyx_GIVEREF(__pyx_tuple__939);
  PyList_SET_ITEM(__pyx_t_15, 0, __pyx_tuple__939);
  __Pyx_INCREF(__pyx_tuple__940);
  __Pyx_GIVEREF(__pyx_tuple__940);
  PyList_SET_ITEM(__pyx_t_15, 1, __pyx_tuple__940);
  __Pyx_INCREF(__pyx_tuple__941);
  __Pyx_GIVEREF(__pyx_tuple__941);
  PyList_SET_ITEM(__pyx_t_15, 2, __pyx_tuple__941);
  __Pyx_INCREF(__pyx_tuple__942);
  __Pyx_GIVEREF(__pyx_tuple__942);
  PyList_SET_ITEM(__pyx_t_15, 3, __pyx_tuple__942);
  __pyx_tuple__942 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_192); if (unlikely(!__pyx_tuple__942)) __PYX_ERR(0, 2148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__942);
  __Pyx_GIVEREF(__pyx_tuple__942);
 2149: 
+2150:                                      [(64, 96), (64, 80), (48, 80), (48, 96), ],  # e
  __pyx_tuple__943 = PyTuple_Pack(2, __pyx_int_64, __pyx_int_96); if (unlikely(!__pyx_tuple__943)) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__943);
  __Pyx_GIVEREF(__pyx_tuple__943);
  __pyx_tuple__944 = PyTuple_Pack(2, __pyx_int_64, __pyx_int_80); if (unlikely(!__pyx_tuple__944)) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__944);
  __Pyx_GIVEREF(__pyx_tuple__944);
  __pyx_tuple__945 = PyTuple_Pack(2, __pyx_int_48, __pyx_int_80); if (unlikely(!__pyx_tuple__945)) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__945);
  __Pyx_GIVEREF(__pyx_tuple__945);
/* … */
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_tuple__943);
  __Pyx_GIVEREF(__pyx_tuple__943);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_tuple__943);
  __Pyx_INCREF(__pyx_tuple__944);
  __Pyx_GIVEREF(__pyx_tuple__944);
  PyList_SET_ITEM(__pyx_t_6, 1, __pyx_tuple__944);
  __Pyx_INCREF(__pyx_tuple__945);
  __Pyx_GIVEREF(__pyx_tuple__945);
  PyList_SET_ITEM(__pyx_t_6, 2, __pyx_tuple__945);
  __Pyx_INCREF(__pyx_tuple__946);
  __Pyx_GIVEREF(__pyx_tuple__946);
  PyList_SET_ITEM(__pyx_t_6, 3, __pyx_tuple__946);
  __pyx_tuple__946 = PyTuple_Pack(2, __pyx_int_48, __pyx_int_96); if (unlikely(!__pyx_tuple__946)) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__946);
  __Pyx_GIVEREF(__pyx_tuple__946);
+2151:                                      [(48, 80), (48, 96), (64, 96), (64, 80), ],  # w
  __pyx_tuple__947 = PyTuple_Pack(2, __pyx_int_48, __pyx_int_80); if (unlikely(!__pyx_tuple__947)) __PYX_ERR(0, 2151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__947);
  __Pyx_GIVEREF(__pyx_tuple__947);
  __pyx_tuple__948 = PyTuple_Pack(2, __pyx_int_48, __pyx_int_96); if (unlikely(!__pyx_tuple__948)) __PYX_ERR(0, 2151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__948);
  __Pyx_GIVEREF(__pyx_tuple__948);
  __pyx_tuple__949 = PyTuple_Pack(2, __pyx_int_64, __pyx_int_96); if (unlikely(!__pyx_tuple__949)) __PYX_ERR(0, 2151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__949);
  __Pyx_GIVEREF(__pyx_tuple__949);
/* … */
  __pyx_t_5 = PyList_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_tuple__947);
  __Pyx_GIVEREF(__pyx_tuple__947);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_tuple__947);
  __Pyx_INCREF(__pyx_tuple__948);
  __Pyx_GIVEREF(__pyx_tuple__948);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_tuple__948);
  __Pyx_INCREF(__pyx_tuple__949);
  __Pyx_GIVEREF(__pyx_tuple__949);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_tuple__949);
  __Pyx_INCREF(__pyx_tuple__950);
  __Pyx_GIVEREF(__pyx_tuple__950);
  PyList_SET_ITEM(__pyx_t_5, 3, __pyx_tuple__950);
  __pyx_tuple__950 = PyTuple_Pack(2, __pyx_int_64, __pyx_int_80); if (unlikely(!__pyx_tuple__950)) __PYX_ERR(0, 2151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__950);
  __Pyx_GIVEREF(__pyx_tuple__950);
+2152:                                      [(48, 96), (64, 96), (64, 80), (48, 80), ],  # n
  __pyx_tuple__951 = PyTuple_Pack(2, __pyx_int_48, __pyx_int_96); if (unlikely(!__pyx_tuple__951)) __PYX_ERR(0, 2152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__951);
  __Pyx_GIVEREF(__pyx_tuple__951);
  __pyx_tuple__952 = PyTuple_Pack(2, __pyx_int_64, __pyx_int_96); if (unlikely(!__pyx_tuple__952)) __PYX_ERR(0, 2152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__952);
  __Pyx_GIVEREF(__pyx_tuple__952);
  __pyx_tuple__953 = PyTuple_Pack(2, __pyx_int_64, __pyx_int_80); if (unlikely(!__pyx_tuple__953)) __PYX_ERR(0, 2152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__953);
  __Pyx_GIVEREF(__pyx_tuple__953);
/* … */
  __pyx_t_24 = PyList_New(4); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_INCREF(__pyx_tuple__951);
  __Pyx_GIVEREF(__pyx_tuple__951);
  PyList_SET_ITEM(__pyx_t_24, 0, __pyx_tuple__951);
  __Pyx_INCREF(__pyx_tuple__952);
  __Pyx_GIVEREF(__pyx_tuple__952);
  PyList_SET_ITEM(__pyx_t_24, 1, __pyx_tuple__952);
  __Pyx_INCREF(__pyx_tuple__953);
  __Pyx_GIVEREF(__pyx_tuple__953);
  PyList_SET_ITEM(__pyx_t_24, 2, __pyx_tuple__953);
  __Pyx_INCREF(__pyx_tuple__954);
  __Pyx_GIVEREF(__pyx_tuple__954);
  PyList_SET_ITEM(__pyx_t_24, 3, __pyx_tuple__954);
  __pyx_tuple__954 = PyTuple_Pack(2, __pyx_int_48, __pyx_int_80); if (unlikely(!__pyx_tuple__954)) __PYX_ERR(0, 2152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__954);
  __Pyx_GIVEREF(__pyx_tuple__954);
+2153:                                      [(64, 80), (48, 80), (48, 96), (64, 96), ],  # s
  __pyx_tuple__955 = PyTuple_Pack(2, __pyx_int_64, __pyx_int_80); if (unlikely(!__pyx_tuple__955)) __PYX_ERR(0, 2153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__955);
  __Pyx_GIVEREF(__pyx_tuple__955);
  __pyx_tuple__956 = PyTuple_Pack(2, __pyx_int_48, __pyx_int_80); if (unlikely(!__pyx_tuple__956)) __PYX_ERR(0, 2153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__956);
  __Pyx_GIVEREF(__pyx_tuple__956);
  __pyx_tuple__957 = PyTuple_Pack(2, __pyx_int_48, __pyx_int_96); if (unlikely(!__pyx_tuple__957)) __PYX_ERR(0, 2153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__957);
  __Pyx_GIVEREF(__pyx_tuple__957);
/* … */
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_tuple__955);
  __Pyx_GIVEREF(__pyx_tuple__955);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_tuple__955);
  __Pyx_INCREF(__pyx_tuple__956);
  __Pyx_GIVEREF(__pyx_tuple__956);
  PyList_SET_ITEM(__pyx_t_10, 1, __pyx_tuple__956);
  __Pyx_INCREF(__pyx_tuple__957);
  __Pyx_GIVEREF(__pyx_tuple__957);
  PyList_SET_ITEM(__pyx_t_10, 2, __pyx_tuple__957);
  __Pyx_INCREF(__pyx_tuple__958);
  __Pyx_GIVEREF(__pyx_tuple__958);
  PyList_SET_ITEM(__pyx_t_10, 3, __pyx_tuple__958);
  __pyx_tuple__958 = PyTuple_Pack(2, __pyx_int_64, __pyx_int_96); if (unlikely(!__pyx_tuple__958)) __PYX_ERR(0, 2153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__958);
  __Pyx_GIVEREF(__pyx_tuple__958);
 2154: 
+2155:                                  ] + [[(0, 192), (0, 208), (16, 208), (16, 192)]] * 10, dtype='float32')
  __pyx_tuple__959 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_192); if (unlikely(!__pyx_tuple__959)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__959);
  __Pyx_GIVEREF(__pyx_tuple__959);
  __pyx_tuple__960 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_208); if (unlikely(!__pyx_tuple__960)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__960);
  __Pyx_GIVEREF(__pyx_tuple__960);
  __pyx_tuple__961 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_208); if (unlikely(!__pyx_tuple__961)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__961);
  __Pyx_GIVEREF(__pyx_tuple__961);
/* … */
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_tuple__959);
  __Pyx_GIVEREF(__pyx_tuple__959);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_tuple__959);
  __Pyx_INCREF(__pyx_tuple__960);
  __Pyx_GIVEREF(__pyx_tuple__960);
  PyList_SET_ITEM(__pyx_t_10, 1, __pyx_tuple__960);
  __Pyx_INCREF(__pyx_tuple__961);
  __Pyx_GIVEREF(__pyx_tuple__961);
  PyList_SET_ITEM(__pyx_t_10, 2, __pyx_tuple__961);
  __Pyx_INCREF(__pyx_tuple__962);
  __Pyx_GIVEREF(__pyx_tuple__962);
  PyList_SET_ITEM(__pyx_t_10, 3, __pyx_tuple__962);
  __pyx_t_24 = PyList_New(1 * 10); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 10; __pyx_temp++) {
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_10);
      PyList_SET_ITEM(__pyx_t_24, __pyx_temp, __pyx_t_10);
    }
  }
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyNumber_Add(__pyx_t_14, __pyx_t_24); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
/* … */
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 2155, __pyx_L1_error)
  __pyx_tuple__962 = PyTuple_Pack(2, __pyx_int_16, __pyx_int_192); if (unlikely(!__pyx_tuple__962)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__962);
  __Pyx_GIVEREF(__pyx_tuple__962);
 2156: 
+2157:     def ladderVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_19LadderBlockRenderer_3ladderVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_19LadderBlockRenderer_3ladderVertices = {"ladderVertices", (PyCFunction)__pyx_pw_9_renderer_19LadderBlockRenderer_3ladderVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_19LadderBlockRenderer_3ladderVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  CYTHON_UNUSED PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ladderVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ladderVertices", 1, 7, 7, 1); __PYX_ERR(0, 2157, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ladderVertices", 1, 7, 7, 2); __PYX_ERR(0, 2157, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ladderVertices", 1, 7, 7, 3); __PYX_ERR(0, 2157, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ladderVertices", 1, 7, 7, 4); __PYX_ERR(0, 2157, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ladderVertices", 1, 7, 7, 5); __PYX_ERR(0, 2157, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ladderVertices", 1, 7, 7, 6); __PYX_ERR(0, 2157, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ladderVertices") < 0)) __PYX_ERR(0, 2157, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ladderVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2157, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.LadderBlockRenderer.ladderVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_19LadderBlockRenderer_2ladderVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_19LadderBlockRenderer_2ladderVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices, CYTHON_UNUSED PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, CYTHON_UNUSED PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_26_ladderVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ladderVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_26_ladderVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_26_ladderVertices(__pyx_ptype_9_renderer___pyx_scope_struct_26_ladderVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_19LadderBlockRenderer_4generator19, (PyObject *) __pyx_cur_scope, __pyx_n_s_ladderVertices, __pyx_n_s_LadderBlockRenderer_ladderVertic, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2157, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.LadderBlockRenderer.ladderVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_19LadderBlockRenderer_4generator19(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2157, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("ladderVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__963 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_blockIndices, __pyx_n_s_blockLight, __pyx_n_s_bdata, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__963)) __PYX_ERR(0, 2157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__963);
  __Pyx_GIVEREF(__pyx_tuple__963);
/* … */
  __pyx_t_14 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_19LadderBlockRenderer_3ladderVertices, 0, __pyx_n_s_LadderBlockRenderer_ladderVertic, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__964)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ladderVertices, __pyx_t_14) < 0) __PYX_ERR(0, 2157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_codeobj__964 = (PyObject*)__Pyx_PyCode_New(7, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__963, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_ladderVertices, 2157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__964)) __PYX_ERR(0, 2157, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_26_ladderVertices {
  PyObject_HEAD
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_bdata;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockLight;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
};

+2158:         blockIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blockIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2159:         blockLight = areaBlockLights[1:-1, 1:-1, 1:-1]
  __pyx_slice__389 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__389)) __PYX_ERR(0, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__389);
  __Pyx_GIVEREF(__pyx_slice__389);
  __pyx_slice__390 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__390)) __PYX_ERR(0, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__390);
  __Pyx_GIVEREF(__pyx_slice__390);
  __pyx_slice__391 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__391)) __PYX_ERR(0, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__391);
  __Pyx_GIVEREF(__pyx_slice__391);
/* … */
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_tuple__392); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blockLight = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_tuple__392 = PyTuple_Pack(3, __pyx_slice__389, __pyx_slice__390, __pyx_slice__391); if (unlikely(!__pyx_tuple__392)) __PYX_ERR(0, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__392);
  __Pyx_GIVEREF(__pyx_tuple__392);
+2160:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2160, __pyx_L1_error)
+2161:         bdata = blockData[blockIndices]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_bdata = __pyx_t_1;
  __pyx_t_1 = 0;
 2162: 
+2163:         vertexArray = self.makeTemplate(pymclevel.faces.FaceYIncreasing, blockIndices)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_4);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_blockIndices);
  __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_vertexArray = __pyx_t_1;
  __pyx_t_1 = 0;
+2164:         if not len(vertexArray):
  __pyx_t_5 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 2164, __pyx_L1_error)
  __pyx_t_7 = ((!(__pyx_t_5 != 0)) != 0);
  if (__pyx_t_7) {
/* … */
  }
+2165:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;
 2166: 
+2167:         vertexArray[_ST] = self.ladderTextures[bdata]
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_ladderTextures); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_bdata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 2167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2168:         vertexArray[_XYZ] += self.ladderOffsets[bdata]
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_ladderOffsets); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyObject_GetItem(__pyx_t_6, __pyx_cur_scope->__pyx_v_bdata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_2, __pyx_t_6) < 0)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2169:         vertexArray.view('uint8')[_RGB] *= blockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__393, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_9);
  __pyx_t_8 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = PyObject_GetItem(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__393 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__393)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__393);
  __Pyx_GIVEREF(__pyx_tuple__393);
 2170: 
+2171:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L6_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2171, __pyx_L1_error)
+2172:         self.vertexArrays = [vertexArray]
  __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_vertexArray);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_vertexArray);
  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_vertexArray);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_t_6) < 0) __PYX_ERR(0, 2172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 2173: 
+2174:     makeVertices = ladderVertices
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_ladderVertices);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_ladderVertices);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_14) < 0) __PYX_ERR(0, 2174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
 2175: 
 2176: 
+2177: class WallSignBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_WallSignBlockRenderer, __pyx_n_s_WallSignBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_14 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_WallSignBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WallSignBlockRenderer, __pyx_t_14) < 0) __PYX_ERR(0, 2177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2178:     @classmethod
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_14); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_10) < 0) __PYX_ERR(0, 2179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+2179:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21WallSignBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21WallSignBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_21WallSignBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21WallSignBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2179, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2179, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2179, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.WallSignBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21WallSignBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21WallSignBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.WallSignBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__965 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__965)) __PYX_ERR(0, 2179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__965);
  __Pyx_GIVEREF(__pyx_tuple__965);
/* … */
  __pyx_t_14 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21WallSignBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_WallSignBlockRenderer_getBlockty, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__966)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_codeobj__966 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__965, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2179, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__966)) __PYX_ERR(0, 2179, __pyx_L1_error)
+2180:         return [mats["minecraft:wall_sign"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_wall_sign); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2181: 
+2182:     wallSignTemplate = makeVertexTemplatesFromJsonModel((0, 4.5, 0), (16, 13.5, 2), {
  __pyx_tuple__967 = PyTuple_Pack(3, __pyx_int_0, __pyx_float_4_5, __pyx_int_0); if (unlikely(!__pyx_tuple__967)) __PYX_ERR(0, 2182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__967);
  __Pyx_GIVEREF(__pyx_tuple__967);
  __pyx_tuple__968 = PyTuple_Pack(3, __pyx_int_16, __pyx_float_13_5, __pyx_int_2); if (unlikely(!__pyx_tuple__968)) __PYX_ERR(0, 2182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__968);
  __Pyx_GIVEREF(__pyx_tuple__968);
/* … */
  __pyx_t_14 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__967, __pyx_tuple__968, __pyx_t_10)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_wallSignTemplate, __pyx_t_14) < 0) __PYX_ERR(0, 2182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2183:         "down": (0, 11, 18, 13),
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_down, __pyx_tuple__969) < 0) __PYX_ERR(0, 2183, __pyx_L1_error)
/* … */
  __pyx_tuple__969 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_11, __pyx_int_18, __pyx_int_13); if (unlikely(!__pyx_tuple__969)) __PYX_ERR(0, 2183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__969);
  __Pyx_GIVEREF(__pyx_tuple__969);
+2184:         "up": (0, 6, 16, 8),
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_up, __pyx_tuple__970) < 0) __PYX_ERR(0, 2183, __pyx_L1_error)
/* … */
  __pyx_tuple__970 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_6, __pyx_int_16, __pyx_int_8); if (unlikely(!__pyx_tuple__970)) __PYX_ERR(0, 2184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__970);
  __Pyx_GIVEREF(__pyx_tuple__970);
+2185:         "north": (0, 4, 16, 13),
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_north, __pyx_tuple__971) < 0) __PYX_ERR(0, 2183, __pyx_L1_error)
/* … */
  __pyx_tuple__971 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_4, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__971)) __PYX_ERR(0, 2185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__971);
  __Pyx_GIVEREF(__pyx_tuple__971);
+2186:         "south": (0, 4, 16, 13),
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_south, __pyx_tuple__972) < 0) __PYX_ERR(0, 2183, __pyx_L1_error)
/* … */
  __pyx_tuple__972 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_4, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__972)) __PYX_ERR(0, 2186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__972);
  __Pyx_GIVEREF(__pyx_tuple__972);
+2187:         "west": (0, 4, 2, 13),
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_west, __pyx_tuple__973) < 0) __PYX_ERR(0, 2183, __pyx_L1_error)
/* … */
  __pyx_tuple__973 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_4, __pyx_int_2, __pyx_int_13); if (unlikely(!__pyx_tuple__973)) __PYX_ERR(0, 2187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__973);
  __Pyx_GIVEREF(__pyx_tuple__973);
+2188:         "east": (10, 4, 12, 13)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_east, __pyx_tuple__974) < 0) __PYX_ERR(0, 2183, __pyx_L1_error)
/* … */
  __pyx_tuple__974 = PyTuple_Pack(4, __pyx_int_10, __pyx_int_4, __pyx_int_12, __pyx_int_13); if (unlikely(!__pyx_tuple__974)) __PYX_ERR(0, 2188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__974);
  __Pyx_GIVEREF(__pyx_tuple__974);
 2189:     })
 2190: 
 2191:     # I don't know how this sytem works and how it should be structured, but this seem to do the job
+2192:     wallSignTemplates = numpy.array([
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_array); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_t_11 = PyList_New(8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_11, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_21);
  PyList_SET_ITEM(__pyx_t_11, 1, __pyx_t_21);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_11, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_11, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_11, 4, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_11, 5, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_11, 6, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_11, 7, __pyx_t_13);
  __pyx_t_10 = 0;
  __pyx_t_21 = 0;
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
  __pyx_t_12 = 0;
  __pyx_t_8 = 0;
  __pyx_t_15 = 0;
  __pyx_t_13 = 0;
  __pyx_t_13 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_24))) {
    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_24);
    if (likely(__pyx_t_13)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_24);
      __Pyx_INCREF(__pyx_t_13);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_24, function);
    }
  }
  if (!__pyx_t_13) {
    __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_24, __pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2192, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_GOTREF(__pyx_t_14);
  } else {
    __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_13); __pyx_t_13 = NULL;
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_11);
    __pyx_t_11 = 0;
    __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_t_15, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  }
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_wallSignTemplates, __pyx_t_14) < 0) __PYX_ERR(0, 2192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2193:         wallSignTemplate,
  __pyx_t_10 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_wallSignTemplate);
  if (unlikely(!__pyx_t_10)) {
    PyErr_Clear();
    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_wallSignTemplate);
  }
  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
+2194:         wallSignTemplate,
  __pyx_t_21 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_wallSignTemplate);
  if (unlikely(!__pyx_t_21)) {
    PyErr_Clear();
    __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_wallSignTemplate);
  }
  if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
+2195:         rotateTemplate(wallSignTemplate, x=0, y=180),
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_wallSignTemplate);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_wallSignTemplate);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2195, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_6 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_5), &__pyx_t_17)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2196:         wallSignTemplate,
  __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_wallSignTemplate);
  if (unlikely(!__pyx_t_5)) {
    PyErr_Clear();
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_wallSignTemplate);
  }
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
+2197:         rotateTemplate(wallSignTemplate, x=0, y=90),
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_wallSignTemplate);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_wallSignTemplate);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (!(likely(((__pyx_t_15) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_15, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2197, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_12 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_15), &__pyx_t_17)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2198:         rotateTemplate(wallSignTemplate, x=0, y=270),
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_wallSignTemplate);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_wallSignTemplate);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (!(likely(((__pyx_t_15) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_15, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2198, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_8 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_15), &__pyx_t_17)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2199:         numpy.zeros((6, 4, 6)), numpy.zeros((6, 4, 6))
  __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_zeros); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
/* … */
  __pyx_tuple__975 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__975)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__975);
  __Pyx_GIVEREF(__pyx_tuple__975);
  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__976, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_tuple__976 = PyTuple_Pack(1, __pyx_tuple__975); if (unlikely(!__pyx_tuple__976)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__976);
  __Pyx_GIVEREF(__pyx_tuple__976);
  __pyx_tuple__977 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__977)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__977);
  __Pyx_GIVEREF(__pyx_tuple__977);
  __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__978, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_tuple__978 = PyTuple_Pack(1, __pyx_tuple__977); if (unlikely(!__pyx_tuple__978)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__978);
  __Pyx_GIVEREF(__pyx_tuple__978);
 2200:     ])
 2201: 
+2202:     makeVertices = makeVerticesFromModel(wallSignTemplates, 7)
  __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeVerticesFromModel); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_wallSignTemplates);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_wallSignTemplates);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_11 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_24))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_24);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_24);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_24, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_13 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (__pyx_t_11) {
    __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_15);
  PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_9, __pyx_t_15);
  __Pyx_INCREF(__pyx_int_7);
  __Pyx_GIVEREF(__pyx_int_7);
  PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_9, __pyx_int_7);
  __pyx_t_15 = 0;
  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_t_13, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_14) < 0) __PYX_ERR(0, 2202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
 2203: 
 2204: 
+2205: class StandingSignRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_StandingSignRenderer, __pyx_n_s_StandingSignRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_StandingSignRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_StandingSignRenderer, __pyx_t_13) < 0) __PYX_ERR(0, 2205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2206:     @classmethod
  __pyx_t_24 = __Pyx_Method_ClassMethod(__pyx_t_14); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_24) < 0) __PYX_ERR(0, 2207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+2207:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_20StandingSignRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_20StandingSignRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_20StandingSignRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_20StandingSignRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2207, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2207, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2207, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.StandingSignRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_20StandingSignRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_20StandingSignRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.StandingSignRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__979 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__979)) __PYX_ERR(0, 2207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__979);
  __Pyx_GIVEREF(__pyx_tuple__979);
/* … */
  __pyx_t_14 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_20StandingSignRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_StandingSignRenderer_getBlocktyp, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__980)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_codeobj__980 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__979, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__980)) __PYX_ERR(0, 2207, __pyx_L1_error)
+2208:         return [mats["minecraft:standing_sign"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_standing_sign); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2209: 
+2210:     signTemplate = makeVertexTemplatesFromJsonModel((0, 7, 7), (16, 16, 9), {
  __pyx_tuple__981 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_7, __pyx_int_7); if (unlikely(!__pyx_tuple__981)) __PYX_ERR(0, 2210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__981);
  __Pyx_GIVEREF(__pyx_tuple__981);
  __pyx_tuple__982 = PyTuple_Pack(3, __pyx_int_16, __pyx_int_16, __pyx_int_9); if (unlikely(!__pyx_tuple__982)) __PYX_ERR(0, 2210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__982);
  __Pyx_GIVEREF(__pyx_tuple__982);
/* … */
  __pyx_t_14 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__981, __pyx_tuple__982, __pyx_t_24)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_signTemplate, __pyx_t_14) < 0) __PYX_ERR(0, 2210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2211:         "down": (0, 14, 16, 16),
  __pyx_t_24 = PyDict_New(); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  if (PyDict_SetItem(__pyx_t_24, __pyx_n_s_down, __pyx_tuple__983) < 0) __PYX_ERR(0, 2211, __pyx_L1_error)
/* … */
  __pyx_tuple__983 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_14, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__983)) __PYX_ERR(0, 2211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__983);
  __Pyx_GIVEREF(__pyx_tuple__983);
+2212:         "up": (0, 12, 16, 14),
  if (PyDict_SetItem(__pyx_t_24, __pyx_n_s_up, __pyx_tuple__984) < 0) __PYX_ERR(0, 2211, __pyx_L1_error)
/* … */
  __pyx_tuple__984 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_12, __pyx_int_16, __pyx_int_14); if (unlikely(!__pyx_tuple__984)) __PYX_ERR(0, 2212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__984);
  __Pyx_GIVEREF(__pyx_tuple__984);
+2213:         "north": (0, 7, 16, 16),
  if (PyDict_SetItem(__pyx_t_24, __pyx_n_s_north, __pyx_tuple__985) < 0) __PYX_ERR(0, 2211, __pyx_L1_error)
/* … */
  __pyx_tuple__985 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_7, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__985)) __PYX_ERR(0, 2213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__985);
  __Pyx_GIVEREF(__pyx_tuple__985);
+2214:         "south": (0, 7, 16, 16),
  if (PyDict_SetItem(__pyx_t_24, __pyx_n_s_south, __pyx_tuple__986) < 0) __PYX_ERR(0, 2211, __pyx_L1_error)
/* … */
  __pyx_tuple__986 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_7, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__986)) __PYX_ERR(0, 2214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__986);
  __Pyx_GIVEREF(__pyx_tuple__986);
+2215:         "west": (0, 7, 2, 16),
  if (PyDict_SetItem(__pyx_t_24, __pyx_n_s_west, __pyx_tuple__987) < 0) __PYX_ERR(0, 2211, __pyx_L1_error)
/* … */
  __pyx_tuple__987 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_7, __pyx_int_2, __pyx_int_16); if (unlikely(!__pyx_tuple__987)) __PYX_ERR(0, 2215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__987);
  __Pyx_GIVEREF(__pyx_tuple__987);
+2216:         "east": (14, 7, 16, 16)
  if (PyDict_SetItem(__pyx_t_24, __pyx_n_s_east, __pyx_tuple__988) < 0) __PYX_ERR(0, 2211, __pyx_L1_error)
/* … */
  __pyx_tuple__988 = PyTuple_Pack(4, __pyx_int_14, __pyx_int_7, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__988)) __PYX_ERR(0, 2216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__988);
  __Pyx_GIVEREF(__pyx_tuple__988);
 2217:     })
 2218: 
+2219:     signTemplates = numpy.array([
  __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_24, __pyx_n_s_array); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
/* … */
  __pyx_t_8 = PyList_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_24);
  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_11);
  __pyx_t_24 = 0;
  __pyx_t_15 = 0;
  __pyx_t_11 = 0;
  __pyx_t_11 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_13))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_13);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_13, function);
    }
  }
  if (!__pyx_t_11) {
    __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2219, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_14);
  } else {
    __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_11); __pyx_t_11 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  }
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_signTemplates, __pyx_t_14) < 0) __PYX_ERR(0, 2219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2220:         signTemplate,
  __pyx_t_24 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_signTemplate);
  if (unlikely(!__pyx_t_24)) {
    PyErr_Clear();
    __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_signTemplate);
  }
  if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
+2221:         numpy.zeros((6, 4, 6)), numpy.zeros((6, 4, 6))
  __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
/* … */
  __pyx_tuple__989 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__989)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__989);
  __Pyx_GIVEREF(__pyx_tuple__989);
  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__990, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_tuple__990 = PyTuple_Pack(1, __pyx_tuple__989); if (unlikely(!__pyx_tuple__990)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__990);
  __Pyx_GIVEREF(__pyx_tuple__990);
  __pyx_tuple__991 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__991)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__991);
  __Pyx_GIVEREF(__pyx_tuple__991);
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__992, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__992 = PyTuple_Pack(1, __pyx_tuple__991); if (unlikely(!__pyx_tuple__992)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__992);
  __Pyx_GIVEREF(__pyx_tuple__992);
 2222:     ])
 2223: 
+2224:     postTemplate = makeVertexTemplatesFromJsonModel((7, 0, 7), (9, 7, 9), {
  __pyx_tuple__993 = PyTuple_Pack(3, __pyx_int_7, __pyx_int_0, __pyx_int_7); if (unlikely(!__pyx_tuple__993)) __PYX_ERR(0, 2224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__993);
  __Pyx_GIVEREF(__pyx_tuple__993);
  __pyx_tuple__994 = PyTuple_Pack(3, __pyx_int_9, __pyx_int_7, __pyx_int_9); if (unlikely(!__pyx_tuple__994)) __PYX_ERR(0, 2224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__994);
  __Pyx_GIVEREF(__pyx_tuple__994);
/* … */
  __pyx_t_13 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__993, __pyx_tuple__994, __pyx_t_14)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_postTemplate, __pyx_t_13) < 0) __PYX_ERR(0, 2224, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2225:         "down": (7, 0, 9, 6),
  __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_down, __pyx_tuple__995) < 0) __PYX_ERR(0, 2225, __pyx_L1_error)
/* … */
  __pyx_tuple__995 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_0, __pyx_int_9, __pyx_int_6); if (unlikely(!__pyx_tuple__995)) __PYX_ERR(0, 2225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__995);
  __Pyx_GIVEREF(__pyx_tuple__995);
+2226:         "up": (7, 0, 9, 6),
  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_up, __pyx_tuple__996) < 0) __PYX_ERR(0, 2225, __pyx_L1_error)
/* … */
  __pyx_tuple__996 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_0, __pyx_int_9, __pyx_int_6); if (unlikely(!__pyx_tuple__996)) __PYX_ERR(0, 2226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__996);
  __Pyx_GIVEREF(__pyx_tuple__996);
+2227:         "north": (7, 0, 9, 6),
  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_north, __pyx_tuple__997) < 0) __PYX_ERR(0, 2225, __pyx_L1_error)
/* … */
  __pyx_tuple__997 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_0, __pyx_int_9, __pyx_int_6); if (unlikely(!__pyx_tuple__997)) __PYX_ERR(0, 2227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__997);
  __Pyx_GIVEREF(__pyx_tuple__997);
+2228:         "south": (7, 0, 9, 6),
  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_south, __pyx_tuple__998) < 0) __PYX_ERR(0, 2225, __pyx_L1_error)
/* … */
  __pyx_tuple__998 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_0, __pyx_int_9, __pyx_int_6); if (unlikely(!__pyx_tuple__998)) __PYX_ERR(0, 2228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__998);
  __Pyx_GIVEREF(__pyx_tuple__998);
+2229:         "west": (7, 0, 9, 6),
  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_west, __pyx_tuple__999) < 0) __PYX_ERR(0, 2225, __pyx_L1_error)
/* … */
  __pyx_tuple__999 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_0, __pyx_int_9, __pyx_int_6); if (unlikely(!__pyx_tuple__999)) __PYX_ERR(0, 2229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__999);
  __Pyx_GIVEREF(__pyx_tuple__999);
+2230:         "east": (7, 0, 9, 6),
  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_east, __pyx_tuple__1000) < 0) __PYX_ERR(0, 2225, __pyx_L1_error)
/* … */
  __pyx_tuple__1000 = PyTuple_Pack(4, __pyx_int_7, __pyx_int_0, __pyx_int_9, __pyx_int_6); if (unlikely(!__pyx_tuple__1000)) __PYX_ERR(0, 2230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1000);
  __Pyx_GIVEREF(__pyx_tuple__1000);
 2231:     })
 2232: 
+2233:     postTemplates = numpy.array([
  __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_array); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
  __pyx_t_24 = PyList_New(3); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_14);
  PyList_SET_ITEM(__pyx_t_24, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_24, 1, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_24, 2, __pyx_t_11);
  __pyx_t_14 = 0;
  __pyx_t_8 = 0;
  __pyx_t_11 = 0;
  __pyx_t_11 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_15))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_15);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_15, function);
    }
  }
  if (!__pyx_t_11) {
    __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_24); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2233, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
    __Pyx_GOTREF(__pyx_t_13);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __pyx_t_11 = NULL;
    __Pyx_GIVEREF(__pyx_t_24);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_24);
    __pyx_t_24 = 0;
    __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_8, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_postTemplates, __pyx_t_13) < 0) __PYX_ERR(0, 2233, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2234:         postTemplate,
  __pyx_t_14 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_postTemplate);
  if (unlikely(!__pyx_t_14)) {
    PyErr_Clear();
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_postTemplate);
  }
  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
+2235:         numpy.zeros((6, 4, 6)), numpy.zeros((6, 4, 6))
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_tuple__1001 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1001)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1001);
  __Pyx_GIVEREF(__pyx_tuple__1001);
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__1002, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_zeros); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_tuple__1002 = PyTuple_Pack(1, __pyx_tuple__1001); if (unlikely(!__pyx_tuple__1002)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1002);
  __Pyx_GIVEREF(__pyx_tuple__1002);
  __pyx_tuple__1003 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1003)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1003);
  __Pyx_GIVEREF(__pyx_tuple__1003);
  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_tuple__1004, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  __pyx_tuple__1004 = PyTuple_Pack(1, __pyx_tuple__1003); if (unlikely(!__pyx_tuple__1004)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1004);
  __Pyx_GIVEREF(__pyx_tuple__1004);
 2236:     ])
 2237: 
+2238:     makeVertices = makeVerticesFromModel([signTemplates, postTemplates])
  __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeVerticesFromModel); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_signTemplates);
  if (unlikely(!__pyx_t_8)) {
    PyErr_Clear();
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_signTemplates);
  }
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_24 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_postTemplates);
  if (unlikely(!__pyx_t_24)) {
    PyErr_Clear();
    __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_postTemplates);
  }
  if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __pyx_t_11 = PyList_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_24);
  PyList_SET_ITEM(__pyx_t_11, 1, __pyx_t_24);
  __pyx_t_8 = 0;
  __pyx_t_24 = 0;
  __pyx_t_24 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_15))) {
    __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_15);
    if (likely(__pyx_t_24)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
      __Pyx_INCREF(__pyx_t_24);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_15, function);
    }
  }
  if (!__pyx_t_24) {
    __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2238, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_GOTREF(__pyx_t_13);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_24); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_24); __pyx_t_24 = NULL;
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_11);
    __pyx_t_11 = 0;
    __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_8, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2238, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 2239: 
 2240: 
+2241: class SnowBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_SnowBlockRenderer, __pyx_n_s_SnowBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_15 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_SnowBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SnowBlockRenderer, __pyx_t_15) < 0) __PYX_ERR(0, 2241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2242:     @classmethod
  __pyx_t_15 = __Pyx_Method_ClassMethod(__pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_15) < 0) __PYX_ERR(0, 2243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2243:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17SnowBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17SnowBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_17SnowBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17SnowBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2243, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2243, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2243, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.SnowBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17SnowBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17SnowBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.SnowBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_17SnowBlockRenderer_4generator20(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1005 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1005)) __PYX_ERR(0, 2243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1005);
  __Pyx_GIVEREF(__pyx_tuple__1005);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17SnowBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_SnowBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1006)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_codeobj__1006 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1005, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1006)) __PYX_ERR(0, 2243, __pyx_L1_error)
+2244:         return [mats["minecraft:snow_layer"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_snow_layer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2245: 
+2246:     def makeSnowVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17SnowBlockRenderer_3makeSnowVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17SnowBlockRenderer_3makeSnowVertices = {"makeSnowVertices", (PyCFunction)__pyx_pw_9_renderer_17SnowBlockRenderer_3makeSnowVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17SnowBlockRenderer_3makeSnowVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeSnowVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeSnowVertices", 1, 7, 7, 1); __PYX_ERR(0, 2246, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeSnowVertices", 1, 7, 7, 2); __PYX_ERR(0, 2246, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeSnowVertices", 1, 7, 7, 3); __PYX_ERR(0, 2246, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeSnowVertices", 1, 7, 7, 4); __PYX_ERR(0, 2246, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeSnowVertices", 1, 7, 7, 5); __PYX_ERR(0, 2246, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeSnowVertices", 1, 7, 7, 6); __PYX_ERR(0, 2246, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeSnowVertices") < 0)) __PYX_ERR(0, 2246, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeSnowVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2246, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.SnowBlockRenderer.makeSnowVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17SnowBlockRenderer_2makeSnowVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17SnowBlockRenderer_2makeSnowVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_27_makeSnowVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeSnowVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_27_makeSnowVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_27_makeSnowVertices(__pyx_ptype_9_renderer___pyx_scope_struct_27_makeSnowVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_17SnowBlockRenderer_4generator20, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeSnowVertices, __pyx_n_s_SnowBlockRenderer_makeSnowVertic, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2246, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.SnowBlockRenderer.makeSnowVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_17SnowBlockRenderer_4generator20(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2246, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makeSnowVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1007 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1007)) __PYX_ERR(0, 2246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1007);
  __Pyx_GIVEREF(__pyx_tuple__1007);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17SnowBlockRenderer_3makeSnowVertices, 0, __pyx_n_s_SnowBlockRenderer_makeSnowVertic, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1008)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeSnowVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2246, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_codeobj__1008 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1007, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeSnowVertices, 2246, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1008)) __PYX_ERR(0, 2246, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_27_makeSnowVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2247:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
 2248:         # snowIndices = self.getMaterialIndices(blockMaterials)
+2249:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2250:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2251:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2251, __pyx_L1_error)
+2252:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2252, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2252, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2252, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2252, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2253: 
+2254:             if direction != pymclevel.faces.FaceYIncreasing:
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2254, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2254, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
+2255:                 blockIndices = materialIndices & exposedFaceIndices
      __pyx_t_3 = PyNumber_And(__pyx_cur_scope->__pyx_v_materialIndices, __pyx_cur_scope->__pyx_v_exposedFaceIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
 2256:             else:
+2257:                 blockIndices = materialIndices
    /*else*/ {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
    }
    __pyx_L7:;
 2258: 
+2259:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+2260:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_9);
    __pyx_t_8 = 0;
    __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
 2261: 
+2262:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
+2263:             if not len(vertexArray):
    __pyx_t_10 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2263, __pyx_L1_error)
    __pyx_t_7 = ((!(__pyx_t_10 != 0)) != 0);
    if (__pyx_t_7) {
/* … */
    }
+2264:                 continue
      goto __pyx_L5_continue;
 2265: 
+2266:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], 0)[:, numpy.newaxis, 0:2]
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_10, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_10, __pyx_t_11);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_10, __pyx_int_0);
    __pyx_t_3 = 0;
    __pyx_t_11 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__394 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__394)) __PYX_ERR(0, 2266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__394);
  __Pyx_GIVEREF(__pyx_slice__394);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__394);
    __Pyx_GIVEREF(__pyx_slice__394);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__394);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__395);
    __Pyx_GIVEREF(__pyx_slice__395);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__395);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9, __pyx_t_12) < 0)) __PYX_ERR(0, 2266, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_slice__395 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__395)) __PYX_ERR(0, 2266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__395);
  __Pyx_GIVEREF(__pyx_slice__395);
+2267:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__396, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_4 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_9, __pyx_t_4) < 0)) __PYX_ERR(0, 2267, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__396 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__396)) __PYX_ERR(0, 2267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__396);
  __Pyx_GIVEREF(__pyx_tuple__396);
 2268: 
+2269:             if direction == pymclevel.faces.FaceYIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2269, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2269, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (__pyx_t_7) {
/* … */
    }
+2270:                 vertexArray[_XYZ][..., 1] -= 0.875
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2270, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2270, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_INCREF(__pyx_tuple__397);
      __pyx_t_15 = __pyx_tuple__397;
      __pyx_t_9 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2270, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = __Pyx_PyFloat_SubtractObjC(__pyx_t_9, __pyx_float_0_875, 0.875, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2270, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_4) < 0)) __PYX_ERR(0, 2270, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__397 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__397)) __PYX_ERR(0, 2270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__397);
  __Pyx_GIVEREF(__pyx_tuple__397);
 2271: 
+2272:             if direction != pymclevel.faces.FaceYIncreasing and direction != pymclevel.faces.FaceYDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_16) {
    } else {
      __pyx_t_7 = __pyx_t_16;
      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_FaceYDecreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2272, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __pyx_t_16;
    __pyx_L11_bool_binop_done:;
    if (__pyx_t_7) {
/* … */
    }
+2273:                 vertexArray[_XYZ][..., 2:4, 1] -= 0.875
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2273, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2273, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__398 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__398)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__398);
  __Pyx_GIVEREF(__pyx_slice__398);
      __Pyx_INCREF(__pyx_tuple__399);
      __pyx_t_15 = __pyx_tuple__399;
      __pyx_t_12 = PyObject_GetItem(__pyx_t_4, __pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2273, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_9 = __Pyx_PyFloat_SubtractObjC(__pyx_t_12, __pyx_float_0_875, 0.875, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2273, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_15, __pyx_t_9) < 0)) __PYX_ERR(0, 2273, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__399 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__398, __pyx_int_1); if (unlikely(!__pyx_tuple__399)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__399);
  __Pyx_GIVEREF(__pyx_tuple__399);
+2274:                 vertexArray[_ST][..., 2:4, 1] += 14
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2274, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2274, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__400 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__400)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__400);
  __Pyx_GIVEREF(__pyx_slice__400);
      __Pyx_INCREF(__pyx_tuple__401);
      __pyx_t_15 = __pyx_tuple__401;
      __pyx_t_4 = PyObject_GetItem(__pyx_t_9, __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2274, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_14, 14, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2274, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_9, __pyx_t_15, __pyx_t_12) < 0)) __PYX_ERR(0, 2274, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_tuple__401 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__400, __pyx_int_1); if (unlikely(!__pyx_tuple__401)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__401);
  __Pyx_GIVEREF(__pyx_tuple__401);
 2275: 
+2276:             append(vertexArray)
    __pyx_t_17 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 2276, __pyx_L1_error)
+2277:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L13_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2277, __pyx_L1_error)
+2278:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2278, __pyx_L1_error)
 2279: 
+2280:     makeVertices = makeSnowVertices
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeSnowVertices);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeSnowVertices);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
 2281: 
 2282: 
+2283: class CarpetBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_CarpetBlockRenderer, __pyx_n_s_CarpetBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_CarpetBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CarpetBlockRenderer, __pyx_t_13) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2284:     @classmethod
  __pyx_t_13 = __Pyx_Method_ClassMethod(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_13) < 0) __PYX_ERR(0, 2285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2285:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_19CarpetBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_19CarpetBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_19CarpetBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_19CarpetBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2285, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2285, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2285, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.CarpetBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_19CarpetBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_19CarpetBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.CarpetBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_19CarpetBlockRenderer_4generator21(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1009 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1009)) __PYX_ERR(0, 2285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1009);
  __Pyx_GIVEREF(__pyx_tuple__1009);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_19CarpetBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_CarpetBlockRenderer_getBlocktype, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1010)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_codeobj__1010 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1009, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1010)) __PYX_ERR(0, 2285, __pyx_L1_error)
+2286:         return [mats["minecraft:carpet"].ID, mats["minecraft:waterlily"].ID]  # Separate before implementing layers
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_carpet); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_waterlily); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2287: 
+2288:     def makeCarpetVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_19CarpetBlockRenderer_3makeCarpetVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_19CarpetBlockRenderer_3makeCarpetVertices = {"makeCarpetVertices", (PyCFunction)__pyx_pw_9_renderer_19CarpetBlockRenderer_3makeCarpetVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_19CarpetBlockRenderer_3makeCarpetVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeCarpetVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCarpetVertices", 1, 7, 7, 1); __PYX_ERR(0, 2288, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCarpetVertices", 1, 7, 7, 2); __PYX_ERR(0, 2288, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCarpetVertices", 1, 7, 7, 3); __PYX_ERR(0, 2288, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCarpetVertices", 1, 7, 7, 4); __PYX_ERR(0, 2288, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCarpetVertices", 1, 7, 7, 5); __PYX_ERR(0, 2288, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCarpetVertices", 1, 7, 7, 6); __PYX_ERR(0, 2288, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeCarpetVertices") < 0)) __PYX_ERR(0, 2288, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeCarpetVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2288, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.CarpetBlockRenderer.makeCarpetVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_19CarpetBlockRenderer_2makeCarpetVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_19CarpetBlockRenderer_2makeCarpetVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_28_makeCarpetVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeCarpetVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_28_makeCarpetVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_28_makeCarpetVertices(__pyx_ptype_9_renderer___pyx_scope_struct_28_makeCarpetVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_19CarpetBlockRenderer_4generator21, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeCarpetVertices, __pyx_n_s_CarpetBlockRenderer_makeCarpetVe, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2288, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.CarpetBlockRenderer.makeCarpetVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_19CarpetBlockRenderer_4generator21(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2288, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makeCarpetVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1011 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1011)) __PYX_ERR(0, 2288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1011);
  __Pyx_GIVEREF(__pyx_tuple__1011);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_19CarpetBlockRenderer_3makeCarpetVertices, 0, __pyx_n_s_CarpetBlockRenderer_makeCarpetVe, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1012)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeCarpetVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2288, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_codeobj__1012 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1011, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeCarpetVertices, 2288, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1012)) __PYX_ERR(0, 2288, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_28_makeCarpetVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2289:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
 2290:         # snowIndices = self.getMaterialIndices(blockMaterials)
+2291:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2292:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2293:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2293, __pyx_L1_error)
+2294:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2294, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2294, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2294, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2294, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2295: 
+2296:             if direction != pymclevel.faces.FaceYIncreasing:
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2296, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2296, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
+2297:                 blockIndices = materialIndices & exposedFaceIndices
      __pyx_t_3 = PyNumber_And(__pyx_cur_scope->__pyx_v_materialIndices, __pyx_cur_scope->__pyx_v_exposedFaceIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2297, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
 2298:             else:
+2299:                 blockIndices = materialIndices
    /*else*/ {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
    }
    __pyx_L7:;
 2300: 
+2301:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+2302:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_9);
    __pyx_t_8 = 0;
    __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
 2303: 
+2304:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
+2305:             if not len(vertexArray):
    __pyx_t_10 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2305, __pyx_L1_error)
    __pyx_t_7 = ((!(__pyx_t_10 != 0)) != 0);
    if (__pyx_t_7) {
/* … */
    }
+2306:                 continue
      goto __pyx_L5_continue;
 2307: 
+2308:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], 0)[:, numpy.newaxis, 0:2]
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_10, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_10, __pyx_t_11);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_10, __pyx_int_0);
    __pyx_t_3 = 0;
    __pyx_t_11 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__402 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__402)) __PYX_ERR(0, 2308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__402);
  __Pyx_GIVEREF(__pyx_slice__402);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__402);
    __Pyx_GIVEREF(__pyx_slice__402);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__402);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__403);
    __Pyx_GIVEREF(__pyx_slice__403);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__403);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9, __pyx_t_12) < 0)) __PYX_ERR(0, 2308, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_slice__403 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__403)) __PYX_ERR(0, 2308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__403);
  __Pyx_GIVEREF(__pyx_slice__403);
+2309:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__404, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_4 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_9, __pyx_t_4) < 0)) __PYX_ERR(0, 2309, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__404 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__404)) __PYX_ERR(0, 2309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__404);
  __Pyx_GIVEREF(__pyx_tuple__404);
 2310: 
+2311:             if direction == pymclevel.faces.FaceYIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2311, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2311, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (__pyx_t_7) {
/* … */
    }
+2312:                 vertexArray[_XYZ][..., 1] -= 0.937
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2312, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2312, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_INCREF(__pyx_tuple__405);
      __pyx_t_15 = __pyx_tuple__405;
      __pyx_t_9 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2312, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = __Pyx_PyFloat_SubtractObjC(__pyx_t_9, __pyx_float_0_937, 0.937, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2312, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_4) < 0)) __PYX_ERR(0, 2312, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__405 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__405)) __PYX_ERR(0, 2312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__405);
  __Pyx_GIVEREF(__pyx_tuple__405);
 2313: 
+2314:             if direction != pymclevel.faces.FaceYIncreasing and direction != pymclevel.faces.FaceYDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_16) {
    } else {
      __pyx_t_7 = __pyx_t_16;
      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_FaceYDecreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2314, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __pyx_t_16;
    __pyx_L11_bool_binop_done:;
    if (__pyx_t_7) {
/* … */
    }
+2315:                 vertexArray[_XYZ][..., 2:4, 1] -= 0.937
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2315, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2315, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__406 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__406)) __PYX_ERR(0, 2315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__406);
  __Pyx_GIVEREF(__pyx_slice__406);
      __Pyx_INCREF(__pyx_tuple__407);
      __pyx_t_15 = __pyx_tuple__407;
      __pyx_t_12 = PyObject_GetItem(__pyx_t_4, __pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2315, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_9 = __Pyx_PyFloat_SubtractObjC(__pyx_t_12, __pyx_float_0_937, 0.937, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2315, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_15, __pyx_t_9) < 0)) __PYX_ERR(0, 2315, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__407 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__406, __pyx_int_1); if (unlikely(!__pyx_tuple__407)) __PYX_ERR(0, 2315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__407);
  __Pyx_GIVEREF(__pyx_tuple__407);
+2316:                 vertexArray[_ST][..., 2:4, 1] += 15
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2316, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2316, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__408 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__408)) __PYX_ERR(0, 2316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__408);
  __Pyx_GIVEREF(__pyx_slice__408);
      __Pyx_INCREF(__pyx_tuple__409);
      __pyx_t_15 = __pyx_tuple__409;
      __pyx_t_4 = PyObject_GetItem(__pyx_t_9, __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2316, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_15, 15, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2316, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_9, __pyx_t_15, __pyx_t_12) < 0)) __PYX_ERR(0, 2316, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_tuple__409 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__408, __pyx_int_1); if (unlikely(!__pyx_tuple__409)) __PYX_ERR(0, 2316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__409);
  __Pyx_GIVEREF(__pyx_tuple__409);
 2317: 
+2318:             append(vertexArray)
    __pyx_t_17 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 2318, __pyx_L1_error)
+2319:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L13_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2319, __pyx_L1_error)
+2320:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2320, __pyx_L1_error)
 2321: 
+2322:     makeVertices = makeCarpetVertices
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeCarpetVertices);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeCarpetVertices);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2322, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 2323: 
 2324: 
+2325: class CactusBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_CactusBlockRenderer, __pyx_n_s_CactusBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_15 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_CactusBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CactusBlockRenderer, __pyx_t_15) < 0) __PYX_ERR(0, 2325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2326:     @classmethod
  __pyx_t_15 = __Pyx_Method_ClassMethod(__pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_15) < 0) __PYX_ERR(0, 2327, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2327:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_19CactusBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_19CactusBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_19CactusBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_19CactusBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2327, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2327, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2327, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.CactusBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_19CactusBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_19CactusBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.CactusBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_19CactusBlockRenderer_4generator22(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1013 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1013)) __PYX_ERR(0, 2327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1013);
  __Pyx_GIVEREF(__pyx_tuple__1013);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_19CactusBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_CactusBlockRenderer_getBlocktype, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1014)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_codeobj__1014 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1013, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2327, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1014)) __PYX_ERR(0, 2327, __pyx_L1_error)
+2328:         return [mats["minecraft:cactus"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_cactus); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2329: 
+2330:     def makeCactusVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_19CactusBlockRenderer_3makeCactusVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_19CactusBlockRenderer_3makeCactusVertices = {"makeCactusVertices", (PyCFunction)__pyx_pw_9_renderer_19CactusBlockRenderer_3makeCactusVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_19CactusBlockRenderer_3makeCactusVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeCactusVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCactusVertices", 1, 7, 7, 1); __PYX_ERR(0, 2330, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCactusVertices", 1, 7, 7, 2); __PYX_ERR(0, 2330, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCactusVertices", 1, 7, 7, 3); __PYX_ERR(0, 2330, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCactusVertices", 1, 7, 7, 4); __PYX_ERR(0, 2330, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCactusVertices", 1, 7, 7, 5); __PYX_ERR(0, 2330, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCactusVertices", 1, 7, 7, 6); __PYX_ERR(0, 2330, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeCactusVertices") < 0)) __PYX_ERR(0, 2330, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeCactusVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2330, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.CactusBlockRenderer.makeCactusVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_19CactusBlockRenderer_2makeCactusVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_19CactusBlockRenderer_2makeCactusVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_29_makeCactusVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeCactusVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_29_makeCactusVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_29_makeCactusVertices(__pyx_ptype_9_renderer___pyx_scope_struct_29_makeCactusVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_19CactusBlockRenderer_4generator22, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeCactusVertices, __pyx_n_s_CactusBlockRenderer_makeCactusVe, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2330, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.CactusBlockRenderer.makeCactusVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_19CactusBlockRenderer_4generator22(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2330, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makeCactusVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1015 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1015)) __PYX_ERR(0, 2330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1015);
  __Pyx_GIVEREF(__pyx_tuple__1015);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_19CactusBlockRenderer_3makeCactusVertices, 0, __pyx_n_s_CactusBlockRenderer_makeCactusVe, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1016)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeCactusVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2330, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_codeobj__1016 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1015, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeCactusVertices, 2330, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1016)) __PYX_ERR(0, 2330, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_29_makeCactusVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2331:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2332:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2333:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2334:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2334, __pyx_L1_error)
+2335:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2335, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2335, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2335, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2335, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2335, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2335, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2336: 
+2337:             blockIndices = materialIndices
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
+2338:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+2339:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_8);
    __pyx_t_7 = 0;
    __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
 2340: 
+2341:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
+2342:             if not len(vertexArray):
    __pyx_t_9 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 2342, __pyx_L1_error)
    __pyx_t_10 = ((!(__pyx_t_9 != 0)) != 0);
    if (__pyx_t_10) {
/* … */
    }
+2343:                 continue
      goto __pyx_L5_continue;
 2344: 
+2345:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], direction)[:, numpy.newaxis, 0:2]
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_9, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_9, __pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_9, __pyx_cur_scope->__pyx_v_direction);
    __pyx_t_4 = 0;
    __pyx_t_11 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__410 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__410)) __PYX_ERR(0, 2345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__410);
  __Pyx_GIVEREF(__pyx_slice__410);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__410);
    __Pyx_GIVEREF(__pyx_slice__410);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__410);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__411);
    __Pyx_GIVEREF(__pyx_slice__411);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__411);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8, __pyx_t_12) < 0)) __PYX_ERR(0, 2345, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_slice__411 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__411)) __PYX_ERR(0, 2345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__411);
  __Pyx_GIVEREF(__pyx_slice__411);
+2346:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__412, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_8, __pyx_t_3) < 0)) __PYX_ERR(0, 2346, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__412 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__412)) __PYX_ERR(0, 2346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__412);
  __Pyx_GIVEREF(__pyx_tuple__412);
 2347: 
+2348:             if direction == pymclevel.faces.FaceXIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2348, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2348, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2349:                 vertexArray[_XYZ][..., 0] -= 0.063
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_INCREF(__pyx_tuple__413);
      __pyx_t_15 = __pyx_tuple__413;
      __pyx_t_8 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_063, 0.063, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_3) < 0)) __PYX_ERR(0, 2349, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__413 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__413)) __PYX_ERR(0, 2349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__413);
  __Pyx_GIVEREF(__pyx_tuple__413);
+2350:             if direction == pymclevel.faces.FaceXDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2350, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2350, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2351:                 vertexArray[_XYZ][..., 0] += 0.063
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_INCREF(__pyx_tuple__414);
      __pyx_t_15 = __pyx_tuple__414;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyFloat_AddObjC(__pyx_t_3, __pyx_float_0_063, 0.063, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_8) < 0)) __PYX_ERR(0, 2351, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__414 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__414)) __PYX_ERR(0, 2351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__414);
  __Pyx_GIVEREF(__pyx_tuple__414);
+2352:             if direction == pymclevel.faces.FaceZIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2352, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2352, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2353:                 vertexArray[_XYZ][..., 2] -= 0.063
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2353, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2353, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_INCREF(__pyx_tuple__415);
      __pyx_t_15 = __pyx_tuple__415;
      __pyx_t_8 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2353, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_063, 0.063, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2353, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_3) < 0)) __PYX_ERR(0, 2353, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__415 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__415)) __PYX_ERR(0, 2353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__415);
  __Pyx_GIVEREF(__pyx_tuple__415);
+2354:             if direction == pymclevel.faces.FaceZDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2354, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2354, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2355:                 vertexArray[_XYZ][..., 2] += 0.063
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_INCREF(__pyx_tuple__416);
      __pyx_t_15 = __pyx_tuple__416;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyFloat_AddObjC(__pyx_t_3, __pyx_float_0_063, 0.063, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_8) < 0)) __PYX_ERR(0, 2355, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__416 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__416)) __PYX_ERR(0, 2355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__416);
  __Pyx_GIVEREF(__pyx_tuple__416);
 2356: 
+2357:             append(vertexArray)
    __pyx_t_16 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 2357, __pyx_L1_error)
+2358:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L12_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2358, __pyx_L1_error)
+2359:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2359, __pyx_L1_error)
 2360: 
+2361:     makeVertices = makeCactusVertices
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeCactusVertices);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeCactusVertices);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
 2362: 
 2363: 
+2364: class PaneBlockRenderer(BlockRenderer):  # Basic no thickness panes, add more faces to widen.
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_PaneBlockRenderer, __pyx_n_s_PaneBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PaneBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PaneBlockRenderer, __pyx_t_13) < 0) __PYX_ERR(0, 2364, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2365: 
+2366:     @classmethod
  __pyx_t_13 = __Pyx_Method_ClassMethod(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_13) < 0) __PYX_ERR(0, 2367, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2367:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17PaneBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17PaneBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_17PaneBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17PaneBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2367, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2367, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2367, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.PaneBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17PaneBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17PaneBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_block = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.PaneBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_block);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_17PaneBlockRenderer_4generator23(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1017 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_block); if (unlikely(!__pyx_tuple__1017)) __PYX_ERR(0, 2367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1017);
  __Pyx_GIVEREF(__pyx_tuple__1017);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17PaneBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_PaneBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1018)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_codeobj__1018 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1017, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2367, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1018)) __PYX_ERR(0, 2367, __pyx_L1_error)
+2368:         return [block.ID for block in mats.blocksByType["SOLID_PANE"]]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_SOLID_PANE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2368, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2368, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2368, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2368, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_block, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_block, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 2368, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2369: 
+2370:     def makePaneVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17PaneBlockRenderer_3makePaneVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17PaneBlockRenderer_3makePaneVertices = {"makePaneVertices", (PyCFunction)__pyx_pw_9_renderer_17PaneBlockRenderer_3makePaneVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17PaneBlockRenderer_3makePaneVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makePaneVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePaneVertices", 1, 7, 7, 1); __PYX_ERR(0, 2370, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePaneVertices", 1, 7, 7, 2); __PYX_ERR(0, 2370, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePaneVertices", 1, 7, 7, 3); __PYX_ERR(0, 2370, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePaneVertices", 1, 7, 7, 4); __PYX_ERR(0, 2370, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePaneVertices", 1, 7, 7, 5); __PYX_ERR(0, 2370, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePaneVertices", 1, 7, 7, 6); __PYX_ERR(0, 2370, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makePaneVertices") < 0)) __PYX_ERR(0, 2370, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makePaneVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2370, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.PaneBlockRenderer.makePaneVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17PaneBlockRenderer_2makePaneVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17PaneBlockRenderer_2makePaneVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_30_makePaneVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makePaneVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_30_makePaneVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_30_makePaneVertices(__pyx_ptype_9_renderer___pyx_scope_struct_30_makePaneVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_17PaneBlockRenderer_4generator23, (PyObject *) __pyx_cur_scope, __pyx_n_s_makePaneVertices, __pyx_n_s_PaneBlockRenderer_makePaneVertic, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2370, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.PaneBlockRenderer.makePaneVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_17PaneBlockRenderer_4generator23(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2370, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makePaneVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1019 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1019)) __PYX_ERR(0, 2370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1019);
  __Pyx_GIVEREF(__pyx_tuple__1019);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17PaneBlockRenderer_3makePaneVertices, 0, __pyx_n_s_PaneBlockRenderer_makePaneVertic, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1020)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makePaneVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2370, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_codeobj__1020 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1019, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makePaneVertices, 2370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1020)) __PYX_ERR(0, 2370, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_30_makePaneVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2371:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2371, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2371, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2371, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2372:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2373:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2374:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2374, __pyx_L1_error)
+2375:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2375, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2375, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2375, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2375, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2375, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2375, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2376: 
+2377:             blockIndices = materialIndices
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
+2378:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+2379:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_8);
    __pyx_t_7 = 0;
    __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
 2380: 
+2381:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
+2382:             if not len(vertexArray):
    __pyx_t_9 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 2382, __pyx_L1_error)
    __pyx_t_10 = ((!(__pyx_t_9 != 0)) != 0);
    if (__pyx_t_10) {
/* … */
    }
+2383:                 continue
      goto __pyx_L5_continue;
+2384:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], direction)[:, numpy.newaxis, 0:2]
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_9, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_9, __pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_9, __pyx_cur_scope->__pyx_v_direction);
    __pyx_t_4 = 0;
    __pyx_t_11 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__417 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__417)) __PYX_ERR(0, 2384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__417);
  __Pyx_GIVEREF(__pyx_slice__417);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__417);
    __Pyx_GIVEREF(__pyx_slice__417);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__417);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__418);
    __Pyx_GIVEREF(__pyx_slice__418);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__418);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8, __pyx_t_12) < 0)) __PYX_ERR(0, 2384, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_slice__418 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__418)) __PYX_ERR(0, 2384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__418);
  __Pyx_GIVEREF(__pyx_slice__418);
+2385:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__419, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_8, __pyx_t_3) < 0)) __PYX_ERR(0, 2385, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__419 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__419)) __PYX_ERR(0, 2385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__419);
  __Pyx_GIVEREF(__pyx_tuple__419);
 2386: 
+2387:             if direction == pymclevel.faces.FaceXIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2387, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2387, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2388:                 vertexArray[_XYZ][..., 0] -= 0.5
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2388, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2388, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_INCREF(__pyx_tuple__420);
      __pyx_t_15 = __pyx_tuple__420;
      __pyx_t_8 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2388, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2388, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_3) < 0)) __PYX_ERR(0, 2388, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__420 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__420)) __PYX_ERR(0, 2388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__420);
  __Pyx_GIVEREF(__pyx_tuple__420);
+2389:             if direction == pymclevel.faces.FaceXDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2389, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2389, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2390:                 vertexArray[_XYZ][..., 0] += 0.5
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_INCREF(__pyx_tuple__421);
      __pyx_t_15 = __pyx_tuple__421;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyFloat_AddObjC(__pyx_t_3, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_8) < 0)) __PYX_ERR(0, 2390, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__421 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__421)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__421);
  __Pyx_GIVEREF(__pyx_tuple__421);
+2391:             if direction == pymclevel.faces.FaceZIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2391, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2391, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2392:                 vertexArray[_XYZ][..., 2] -= 0.5
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_INCREF(__pyx_tuple__422);
      __pyx_t_15 = __pyx_tuple__422;
      __pyx_t_8 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_3) < 0)) __PYX_ERR(0, 2392, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__422 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__422)) __PYX_ERR(0, 2392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__422);
  __Pyx_GIVEREF(__pyx_tuple__422);
+2393:             if direction == pymclevel.faces.FaceZDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2393, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2393, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2394:                 vertexArray[_XYZ][..., 2] += 0.5
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_INCREF(__pyx_tuple__423);
      __pyx_t_15 = __pyx_tuple__423;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyFloat_AddObjC(__pyx_t_3, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_8) < 0)) __PYX_ERR(0, 2394, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__423 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__423)) __PYX_ERR(0, 2394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__423);
  __Pyx_GIVEREF(__pyx_tuple__423);
 2395: 
+2396:             append(vertexArray)
    __pyx_t_16 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 2396, __pyx_L1_error)
+2397:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L12_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2397, __pyx_L1_error)
+2398:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2398, __pyx_L1_error)
 2399: 
+2400:     makeVertices = makePaneVertices
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makePaneVertices);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_makePaneVertices);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 2401: 
 2402: 
+2403: class PlateBlockRenderer(BlockRenderer):  # suggestions to make this the proper shape is appreciated.
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_PlateBlockRenderer, __pyx_n_s_PlateBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_15 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PlateBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PlateBlockRenderer, __pyx_t_15) < 0) __PYX_ERR(0, 2403, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2404: 
+2405:     @classmethod
  __pyx_t_15 = __Pyx_Method_ClassMethod(__pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_15) < 0) __PYX_ERR(0, 2406, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2406:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18PlateBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18PlateBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_18PlateBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18PlateBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2406, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2406, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2406, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.PlateBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18PlateBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18PlateBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_block = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.PlateBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_block);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_18PlateBlockRenderer_4generator24(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1021 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_block); if (unlikely(!__pyx_tuple__1021)) __PYX_ERR(0, 2406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1021);
  __Pyx_GIVEREF(__pyx_tuple__1021);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18PlateBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_PlateBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1022)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_codeobj__1022 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1021, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2406, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1022)) __PYX_ERR(0, 2406, __pyx_L1_error)
+2407:         return [block.ID for block in mats.blocksByType["PRESSURE_PLATE"]]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_PRESSURE_PLATE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2407, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2407, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2407, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2407, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2407, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2407, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_block, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_block, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 2407, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2408: 
+2409:     def makePlateVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18PlateBlockRenderer_3makePlateVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18PlateBlockRenderer_3makePlateVertices = {"makePlateVertices", (PyCFunction)__pyx_pw_9_renderer_18PlateBlockRenderer_3makePlateVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18PlateBlockRenderer_3makePlateVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makePlateVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlateVertices", 1, 7, 7, 1); __PYX_ERR(0, 2409, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlateVertices", 1, 7, 7, 2); __PYX_ERR(0, 2409, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlateVertices", 1, 7, 7, 3); __PYX_ERR(0, 2409, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlateVertices", 1, 7, 7, 4); __PYX_ERR(0, 2409, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlateVertices", 1, 7, 7, 5); __PYX_ERR(0, 2409, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makePlateVertices", 1, 7, 7, 6); __PYX_ERR(0, 2409, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makePlateVertices") < 0)) __PYX_ERR(0, 2409, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makePlateVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2409, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.PlateBlockRenderer.makePlateVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18PlateBlockRenderer_2makePlateVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18PlateBlockRenderer_2makePlateVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_31_makePlateVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makePlateVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_31_makePlateVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_31_makePlateVertices(__pyx_ptype_9_renderer___pyx_scope_struct_31_makePlateVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_18PlateBlockRenderer_4generator24, (PyObject *) __pyx_cur_scope, __pyx_n_s_makePlateVertices, __pyx_n_s_PlateBlockRenderer_makePlateVert, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2409, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.PlateBlockRenderer.makePlateVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_18PlateBlockRenderer_4generator24(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2409, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makePlateVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1023 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1023)) __PYX_ERR(0, 2409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1023);
  __Pyx_GIVEREF(__pyx_tuple__1023);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18PlateBlockRenderer_3makePlateVertices, 0, __pyx_n_s_PlateBlockRenderer_makePlateVert, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1024)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makePlateVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2409, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_codeobj__1024 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1023, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makePlateVertices, 2409, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1024)) __PYX_ERR(0, 2409, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_31_makePlateVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2410:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2411:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2412:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2413:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2413, __pyx_L1_error)
+2414:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2414, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2414, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2414, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2414, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2414, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2414, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2415: 
+2416:             blockIndices = materialIndices
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
+2417:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+2418:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_8);
    __pyx_t_7 = 0;
    __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
+2419:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
+2420:             if not len(vertexArray):
    __pyx_t_9 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 2420, __pyx_L1_error)
    __pyx_t_10 = ((!(__pyx_t_9 != 0)) != 0);
    if (__pyx_t_10) {
/* … */
    }
+2421:                 continue
      goto __pyx_L5_continue;
 2422: 
+2423:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], 0)[:, numpy.newaxis, 0:2]
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_9, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_9, __pyx_t_11);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_9, __pyx_int_0);
    __pyx_t_4 = 0;
    __pyx_t_11 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__424 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__424)) __PYX_ERR(0, 2423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__424);
  __Pyx_GIVEREF(__pyx_slice__424);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__424);
    __Pyx_GIVEREF(__pyx_slice__424);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__424);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__425);
    __Pyx_GIVEREF(__pyx_slice__425);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__425);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8, __pyx_t_12) < 0)) __PYX_ERR(0, 2423, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_slice__425 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__425)) __PYX_ERR(0, 2423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__425);
  __Pyx_GIVEREF(__pyx_slice__425);
+2424:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__426, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_8, __pyx_t_3) < 0)) __PYX_ERR(0, 2424, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__426 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__426)) __PYX_ERR(0, 2424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__426);
  __Pyx_GIVEREF(__pyx_tuple__426);
+2425:             if direction == pymclevel.faces.FaceYIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2425, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2425, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2426:                 vertexArray[_XYZ][..., 1] -= 0.937
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2426, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2426, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_INCREF(__pyx_tuple__427);
      __pyx_t_15 = __pyx_tuple__427;
      __pyx_t_8 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2426, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_937, 0.937, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2426, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_3) < 0)) __PYX_ERR(0, 2426, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__427 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__427)) __PYX_ERR(0, 2426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__427);
  __Pyx_GIVEREF(__pyx_tuple__427);
+2427:             if direction != pymclevel.faces.FaceYIncreasing and direction != pymclevel.faces.FaceYDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_16) {
    } else {
      __pyx_t_10 = __pyx_t_16;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_FaceYDecreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __pyx_t_16;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_10) {
/* … */
    }
+2428:                 vertexArray[_XYZ][..., 2:4, 1] -= 0.937
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2428, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2428, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__428 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__428)) __PYX_ERR(0, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__428);
  __Pyx_GIVEREF(__pyx_slice__428);
      __Pyx_INCREF(__pyx_tuple__429);
      __pyx_t_15 = __pyx_tuple__429;
      __pyx_t_12 = PyObject_GetItem(__pyx_t_3, __pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2428, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_12, __pyx_float_0_937, 0.937, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2428, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_15, __pyx_t_8) < 0)) __PYX_ERR(0, 2428, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__429 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__428, __pyx_int_1); if (unlikely(!__pyx_tuple__429)) __PYX_ERR(0, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__429);
  __Pyx_GIVEREF(__pyx_tuple__429);
+2429:                 vertexArray[_ST][..., 2:4, 1] += 15
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__430 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__430)) __PYX_ERR(0, 2429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__430);
  __Pyx_GIVEREF(__pyx_slice__430);
      __Pyx_INCREF(__pyx_tuple__431);
      __pyx_t_15 = __pyx_tuple__431;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_8, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_15, 15, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_15, __pyx_t_12) < 0)) __PYX_ERR(0, 2429, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__431 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__430, __pyx_int_1); if (unlikely(!__pyx_tuple__431)) __PYX_ERR(0, 2429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__431);
  __Pyx_GIVEREF(__pyx_tuple__431);
 2430: 
+2431:             append(vertexArray)
    __pyx_t_17 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 2431, __pyx_L1_error)
+2432:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L12_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2432, __pyx_L1_error)
+2433:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2433, __pyx_L1_error)
 2434: 
+2435:     makeVertices = makePlateVertices
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makePlateVertices);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_makePlateVertices);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
 2436: 
 2437: 
+2438: class EnchantingBlockRenderer(
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_EnchantingBlockRenderer, __pyx_n_s_EnchantingBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EnchantingBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EnchantingBlockRenderer, __pyx_t_13) < 0) __PYX_ERR(0, 2438, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2439:     BlockRenderer):  # Note: Enderportal frame side sprite has been lowered 1 pixel to use this renderer, will need separate renderer for eye.
 2440: 
+2441:     @classmethod
  __pyx_t_13 = __Pyx_Method_ClassMethod(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_13) < 0) __PYX_ERR(0, 2442, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2442:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_23EnchantingBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_23EnchantingBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_23EnchantingBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_23EnchantingBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2442, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2442, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2442, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.EnchantingBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_23EnchantingBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_23EnchantingBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.EnchantingBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_23EnchantingBlockRenderer_4generator25(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1025 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1025)) __PYX_ERR(0, 2442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1025);
  __Pyx_GIVEREF(__pyx_tuple__1025);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_23EnchantingBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_EnchantingBlockRenderer_getBlock, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1026)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_codeobj__1026 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1025, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2442, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1026)) __PYX_ERR(0, 2442, __pyx_L1_error)
+2443:         return [mats["minecraft:enchanting_table"].ID, mats["minecraft:end_portal_frame"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_enchanting_table); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_end_portal_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2444: 
+2445:     def makeEnchantingVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_23EnchantingBlockRenderer_3makeEnchantingVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_23EnchantingBlockRenderer_3makeEnchantingVertices = {"makeEnchantingVertices", (PyCFunction)__pyx_pw_9_renderer_23EnchantingBlockRenderer_3makeEnchantingVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_23EnchantingBlockRenderer_3makeEnchantingVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeEnchantingVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeEnchantingVertices", 1, 7, 7, 1); __PYX_ERR(0, 2445, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeEnchantingVertices", 1, 7, 7, 2); __PYX_ERR(0, 2445, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeEnchantingVertices", 1, 7, 7, 3); __PYX_ERR(0, 2445, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeEnchantingVertices", 1, 7, 7, 4); __PYX_ERR(0, 2445, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeEnchantingVertices", 1, 7, 7, 5); __PYX_ERR(0, 2445, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeEnchantingVertices", 1, 7, 7, 6); __PYX_ERR(0, 2445, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeEnchantingVertices") < 0)) __PYX_ERR(0, 2445, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeEnchantingVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2445, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.EnchantingBlockRenderer.makeEnchantingVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_23EnchantingBlockRenderer_2makeEnchantingVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_23EnchantingBlockRenderer_2makeEnchantingVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_32_makeEnchantingVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeEnchantingVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_32_makeEnchantingVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_32_makeEnchantingVertices(__pyx_ptype_9_renderer___pyx_scope_struct_32_makeEnchantingVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_23EnchantingBlockRenderer_4generator25, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeEnchantingVertices, __pyx_n_s_EnchantingBlockRenderer_makeEnch, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2445, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.EnchantingBlockRenderer.makeEnchantingVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_23EnchantingBlockRenderer_4generator25(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2445, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makeEnchantingVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1027 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1027)) __PYX_ERR(0, 2445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1027);
  __Pyx_GIVEREF(__pyx_tuple__1027);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_23EnchantingBlockRenderer_3makeEnchantingVertices, 0, __pyx_n_s_EnchantingBlockRenderer_makeEnch, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1028)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeEnchantingVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2445, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_codeobj__1028 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1027, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeEnchantingVertices, 2445, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1028)) __PYX_ERR(0, 2445, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_32_makeEnchantingVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2446:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2447:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2448:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2449:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2449, __pyx_L1_error)
+2450:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2450, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2450, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2450, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2450, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2450, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2450, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2451:             if direction != pymclevel.faces.FaceYIncreasing:
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2451, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2451, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
+2452:                 blockIndices = materialIndices & exposedFaceIndices
      __pyx_t_3 = PyNumber_And(__pyx_cur_scope->__pyx_v_materialIndices, __pyx_cur_scope->__pyx_v_exposedFaceIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
 2453:             else:
+2454:                 blockIndices = materialIndices
    /*else*/ {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
    }
    __pyx_L7:;
 2455: 
+2456:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+2457:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_9);
    __pyx_t_8 = 0;
    __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
+2458:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
+2459:             if not len(vertexArray):
    __pyx_t_10 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2459, __pyx_L1_error)
    __pyx_t_7 = ((!(__pyx_t_10 != 0)) != 0);
    if (__pyx_t_7) {
/* … */
    }
+2460:                 continue
      goto __pyx_L5_continue;
 2461: 
+2462:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], direction)[:, numpy.newaxis, 0:2]
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_10, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_10, __pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_10, __pyx_cur_scope->__pyx_v_direction);
    __pyx_t_3 = 0;
    __pyx_t_11 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__432 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__432)) __PYX_ERR(0, 2462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__432);
  __Pyx_GIVEREF(__pyx_slice__432);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__432);
    __Pyx_GIVEREF(__pyx_slice__432);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__432);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__433);
    __Pyx_GIVEREF(__pyx_slice__433);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__433);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9, __pyx_t_12) < 0)) __PYX_ERR(0, 2462, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_slice__433 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__433)) __PYX_ERR(0, 2462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__433);
  __Pyx_GIVEREF(__pyx_slice__433);
+2463:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2463, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__434, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2463, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2463, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2463, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_4 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2463, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_9, __pyx_t_4) < 0)) __PYX_ERR(0, 2463, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__434 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__434)) __PYX_ERR(0, 2463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__434);
  __Pyx_GIVEREF(__pyx_tuple__434);
+2464:             if direction == pymclevel.faces.FaceYIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2464, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2464, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2464, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2464, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2464, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (__pyx_t_7) {
/* … */
    }
+2465:                 vertexArray[_XYZ][..., 1] -= 0.25
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2465, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2465, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_INCREF(__pyx_tuple__435);
      __pyx_t_15 = __pyx_tuple__435;
      __pyx_t_9 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2465, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = __Pyx_PyFloat_SubtractObjC(__pyx_t_9, __pyx_float_0_25, 0.25, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2465, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_4) < 0)) __PYX_ERR(0, 2465, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__435 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__435)) __PYX_ERR(0, 2465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__435);
  __Pyx_GIVEREF(__pyx_tuple__435);
 2466: 
+2467:             append(vertexArray)
    __pyx_t_16 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 2467, __pyx_L1_error)
+2468:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L10_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2468, __pyx_L1_error)
+2469:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2469, __pyx_L1_error)
 2470: 
+2471:     makeVertices = makeEnchantingVertices
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeEnchantingVertices);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeEnchantingVertices);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2471, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 2472: 
 2473: 
+2474: class DaylightBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_DaylightBlockRenderer, __pyx_n_s_DaylightBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_15 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_DaylightBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DaylightBlockRenderer, __pyx_t_15) < 0) __PYX_ERR(0, 2474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2475:     @classmethod
  __pyx_t_15 = __Pyx_Method_ClassMethod(__pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_15) < 0) __PYX_ERR(0, 2476, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2476:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21DaylightBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21DaylightBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_21DaylightBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21DaylightBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2476, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2476, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2476, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.DaylightBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21DaylightBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21DaylightBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.DaylightBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_21DaylightBlockRenderer_4generator26(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1029 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1029)) __PYX_ERR(0, 2476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1029);
  __Pyx_GIVEREF(__pyx_tuple__1029);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21DaylightBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_DaylightBlockRenderer_getBlockty, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1030)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_codeobj__1030 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1029, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2476, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1030)) __PYX_ERR(0, 2476, __pyx_L1_error)
+2477:         return [mats["minecraft:daylight_detector"].ID, mats.DaylightSensorOn.ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_daylight_detector); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_DaylightSensorOn); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2478: 
+2479:     def makeDaylightVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21DaylightBlockRenderer_3makeDaylightVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21DaylightBlockRenderer_3makeDaylightVertices = {"makeDaylightVertices", (PyCFunction)__pyx_pw_9_renderer_21DaylightBlockRenderer_3makeDaylightVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21DaylightBlockRenderer_3makeDaylightVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeDaylightVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeDaylightVertices", 1, 7, 7, 1); __PYX_ERR(0, 2479, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeDaylightVertices", 1, 7, 7, 2); __PYX_ERR(0, 2479, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeDaylightVertices", 1, 7, 7, 3); __PYX_ERR(0, 2479, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeDaylightVertices", 1, 7, 7, 4); __PYX_ERR(0, 2479, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeDaylightVertices", 1, 7, 7, 5); __PYX_ERR(0, 2479, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeDaylightVertices", 1, 7, 7, 6); __PYX_ERR(0, 2479, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeDaylightVertices") < 0)) __PYX_ERR(0, 2479, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeDaylightVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2479, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.DaylightBlockRenderer.makeDaylightVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21DaylightBlockRenderer_2makeDaylightVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21DaylightBlockRenderer_2makeDaylightVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_33_makeDaylightVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeDaylightVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_33_makeDaylightVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_33_makeDaylightVertices(__pyx_ptype_9_renderer___pyx_scope_struct_33_makeDaylightVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_21DaylightBlockRenderer_4generator26, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeDaylightVertices, __pyx_n_s_DaylightBlockRenderer_makeDaylig, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2479, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.DaylightBlockRenderer.makeDaylightVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_21DaylightBlockRenderer_4generator26(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2479, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makeDaylightVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1031 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1031)) __PYX_ERR(0, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1031);
  __Pyx_GIVEREF(__pyx_tuple__1031);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21DaylightBlockRenderer_3makeDaylightVertices, 0, __pyx_n_s_DaylightBlockRenderer_makeDaylig, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1032)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeDaylightVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2479, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_codeobj__1032 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1031, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeDaylightVertices, 2479, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1032)) __PYX_ERR(0, 2479, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_33_makeDaylightVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2480:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2481:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2482:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2483:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2483, __pyx_L1_error)
+2484:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2484, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2484, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2484, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2484, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2484, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2484, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2485:             if direction != pymclevel.faces.FaceYIncreasing:
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2485, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2485, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
+2486:                 blockIndices = materialIndices & exposedFaceIndices
      __pyx_t_3 = PyNumber_And(__pyx_cur_scope->__pyx_v_materialIndices, __pyx_cur_scope->__pyx_v_exposedFaceIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2486, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
 2487:             else:
+2488:                 blockIndices = materialIndices
    /*else*/ {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
    }
    __pyx_L7:;
 2489: 
+2490:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+2491:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_9);
    __pyx_t_8 = 0;
    __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
+2492:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
+2493:             if not len(vertexArray):
    __pyx_t_10 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2493, __pyx_L1_error)
    __pyx_t_7 = ((!(__pyx_t_10 != 0)) != 0);
    if (__pyx_t_7) {
/* … */
    }
+2494:                 continue
      goto __pyx_L5_continue;
 2495: 
+2496:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], direction)[:, numpy.newaxis, 0:2]
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_10, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_10, __pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_10, __pyx_cur_scope->__pyx_v_direction);
    __pyx_t_3 = 0;
    __pyx_t_11 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__436 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__436)) __PYX_ERR(0, 2496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__436);
  __Pyx_GIVEREF(__pyx_slice__436);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__436);
    __Pyx_GIVEREF(__pyx_slice__436);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__436);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__437);
    __Pyx_GIVEREF(__pyx_slice__437);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__437);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9, __pyx_t_12) < 0)) __PYX_ERR(0, 2496, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_slice__437 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__437)) __PYX_ERR(0, 2496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__437);
  __Pyx_GIVEREF(__pyx_slice__437);
+2497:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__438, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_4 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_9, __pyx_t_4) < 0)) __PYX_ERR(0, 2497, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__438 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__438)) __PYX_ERR(0, 2497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__438);
  __Pyx_GIVEREF(__pyx_tuple__438);
+2498:             if direction == pymclevel.faces.FaceYIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2498, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2498, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (__pyx_t_7) {
/* … */
    }
+2499:                 vertexArray[_XYZ][..., 1] -= 0.625
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2499, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2499, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_INCREF(__pyx_tuple__439);
      __pyx_t_15 = __pyx_tuple__439;
      __pyx_t_9 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2499, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = __Pyx_PyFloat_SubtractObjC(__pyx_t_9, __pyx_float_0_625, 0.625, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2499, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_4) < 0)) __PYX_ERR(0, 2499, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__439 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__439)) __PYX_ERR(0, 2499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__439);
  __Pyx_GIVEREF(__pyx_tuple__439);
+2500:             if direction != pymclevel.faces.FaceYIncreasing and direction != pymclevel.faces.FaceYDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_16) {
    } else {
      __pyx_t_7 = __pyx_t_16;
      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_FaceYDecreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2500, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __pyx_t_16;
    __pyx_L11_bool_binop_done:;
    if (__pyx_t_7) {
/* … */
    }
+2501:                 vertexArray[_XYZ][..., 2:4, 1] -= 0.625
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2501, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2501, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__440 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__440)) __PYX_ERR(0, 2501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__440);
  __Pyx_GIVEREF(__pyx_slice__440);
      __Pyx_INCREF(__pyx_tuple__441);
      __pyx_t_15 = __pyx_tuple__441;
      __pyx_t_12 = PyObject_GetItem(__pyx_t_4, __pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2501, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_9 = __Pyx_PyFloat_SubtractObjC(__pyx_t_12, __pyx_float_0_625, 0.625, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2501, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_15, __pyx_t_9) < 0)) __PYX_ERR(0, 2501, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__441 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__440, __pyx_int_1); if (unlikely(!__pyx_tuple__441)) __PYX_ERR(0, 2501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__441);
  __Pyx_GIVEREF(__pyx_tuple__441);
+2502:                 vertexArray[_ST][..., 2:4, 1] += 10
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2502, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2502, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__442 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__442)) __PYX_ERR(0, 2502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__442);
  __Pyx_GIVEREF(__pyx_slice__442);
      __Pyx_INCREF(__pyx_tuple__443);
      __pyx_t_15 = __pyx_tuple__443;
      __pyx_t_4 = PyObject_GetItem(__pyx_t_9, __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2502, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_10, 10, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2502, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_9, __pyx_t_15, __pyx_t_12) < 0)) __PYX_ERR(0, 2502, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_tuple__443 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__442, __pyx_int_1); if (unlikely(!__pyx_tuple__443)) __PYX_ERR(0, 2502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__443);
  __Pyx_GIVEREF(__pyx_tuple__443);
 2503: 
+2504:             append(vertexArray)
    __pyx_t_17 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 2504, __pyx_L1_error)
+2505:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L13_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2505, __pyx_L1_error)
+2506:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2506, __pyx_L1_error)
 2507: 
+2508:     makeVertices = makeDaylightVertices
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeDaylightVertices);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeDaylightVertices);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2508, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
 2509: 
 2510: 
+2511: class BedBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_BedBlockRenderer, __pyx_n_s_BedBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_BedBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BedBlockRenderer, __pyx_t_13) < 0) __PYX_ERR(0, 2511, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2512:     @classmethod
  __pyx_t_13 = __Pyx_Method_ClassMethod(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_13) < 0) __PYX_ERR(0, 2513, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2513:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_16BedBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_16BedBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_16BedBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_16BedBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2513, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2513, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2513, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.BedBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_16BedBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_16BedBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.BedBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_16BedBlockRenderer_4generator27(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1033 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1033)) __PYX_ERR(0, 2513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1033);
  __Pyx_GIVEREF(__pyx_tuple__1033);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_16BedBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_BedBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1034)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_codeobj__1034 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1033, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2513, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1034)) __PYX_ERR(0, 2513, __pyx_L1_error)
+2514:         return [mats["minecraft:bed"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_bed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2515: 
+2516:     def makeBedVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_16BedBlockRenderer_3makeBedVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_16BedBlockRenderer_3makeBedVertices = {"makeBedVertices", (PyCFunction)__pyx_pw_9_renderer_16BedBlockRenderer_3makeBedVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_16BedBlockRenderer_3makeBedVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeBedVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeBedVertices", 1, 7, 7, 1); __PYX_ERR(0, 2516, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeBedVertices", 1, 7, 7, 2); __PYX_ERR(0, 2516, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeBedVertices", 1, 7, 7, 3); __PYX_ERR(0, 2516, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeBedVertices", 1, 7, 7, 4); __PYX_ERR(0, 2516, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeBedVertices", 1, 7, 7, 5); __PYX_ERR(0, 2516, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeBedVertices", 1, 7, 7, 6); __PYX_ERR(0, 2516, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeBedVertices") < 0)) __PYX_ERR(0, 2516, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeBedVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2516, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.BedBlockRenderer.makeBedVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_16BedBlockRenderer_2makeBedVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_16BedBlockRenderer_2makeBedVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_34_makeBedVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeBedVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_34_makeBedVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_34_makeBedVertices(__pyx_ptype_9_renderer___pyx_scope_struct_34_makeBedVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_16BedBlockRenderer_4generator27, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeBedVertices, __pyx_n_s_BedBlockRenderer_makeBedVertices, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2516, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.BedBlockRenderer.makeBedVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_16BedBlockRenderer_4generator27(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2516, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makeBedVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1035 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1035)) __PYX_ERR(0, 2516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1035);
  __Pyx_GIVEREF(__pyx_tuple__1035);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_16BedBlockRenderer_3makeBedVertices, 0, __pyx_n_s_BedBlockRenderer_makeBedVertices, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1036)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeBedVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2516, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_codeobj__1036 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1035, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeBedVertices, 2516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1036)) __PYX_ERR(0, 2516, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_34_makeBedVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2517:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2518:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2519:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2520:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2520, __pyx_L1_error)
+2521:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2521, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2521, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2521, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2521, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2521, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2521, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2522:             if direction != pymclevel.faces.FaceYIncreasing:
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2522, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2522, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
+2523:                 blockIndices = materialIndices & exposedFaceIndices
      __pyx_t_3 = PyNumber_And(__pyx_cur_scope->__pyx_v_materialIndices, __pyx_cur_scope->__pyx_v_exposedFaceIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2523, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
 2524:             else:
+2525:                 blockIndices = materialIndices
    /*else*/ {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
    }
    __pyx_L7:;
 2526: 
+2527:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
+2528:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_9);
    __pyx_t_8 = 0;
    __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
+2529:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;
+2530:             if not len(vertexArray):
    __pyx_t_10 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2530, __pyx_L1_error)
    __pyx_t_7 = ((!(__pyx_t_10 != 0)) != 0);
    if (__pyx_t_7) {
/* … */
    }
+2531:                 continue
      goto __pyx_L5_continue;
 2532: 
+2533:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], direction)[:, numpy.newaxis, 0:2]
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_10 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_10, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_10, __pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_10, __pyx_cur_scope->__pyx_v_direction);
    __pyx_t_3 = 0;
    __pyx_t_11 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__444 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__444)) __PYX_ERR(0, 2533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__444);
  __Pyx_GIVEREF(__pyx_slice__444);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__444);
    __Pyx_GIVEREF(__pyx_slice__444);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__444);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__445);
    __Pyx_GIVEREF(__pyx_slice__445);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__445);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9, __pyx_t_12) < 0)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_slice__445 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__445)) __PYX_ERR(0, 2533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__445);
  __Pyx_GIVEREF(__pyx_slice__445);
+2534:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__446, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_4 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_9, __pyx_t_4) < 0)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__446 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__446)) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__446);
  __Pyx_GIVEREF(__pyx_tuple__446);
+2535:             if direction == pymclevel.faces.FaceYIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2535, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2535, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (__pyx_t_7) {
/* … */
    }
+2536:                 vertexArray[_XYZ][..., 1] -= 0.438
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_INCREF(__pyx_tuple__447);
      __pyx_t_15 = __pyx_tuple__447;
      __pyx_t_9 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = __Pyx_PyFloat_SubtractObjC(__pyx_t_9, __pyx_float_0_438, 0.438, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_4) < 0)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__447 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__447)) __PYX_ERR(0, 2536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__447);
  __Pyx_GIVEREF(__pyx_tuple__447);
 2537: 
+2538:             append(vertexArray)
    __pyx_t_16 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 2538, __pyx_L1_error)
+2539:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L10_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2539, __pyx_L1_error)
+2540:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2540, __pyx_L1_error)
 2541: 
+2542:     makeVertices = makeBedVertices
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeBedVertices);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeBedVertices);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2542, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 2543: 
 2544: 
+2545: class CakeBlockRenderer(BlockRenderer):  # Only shows whole cakes
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_CakeBlockRenderer, __pyx_n_s_CakeBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_15 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_CakeBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CakeBlockRenderer, __pyx_t_15) < 0) __PYX_ERR(0, 2545, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2546: 
+2547:     @classmethod
  __pyx_t_15 = __Pyx_Method_ClassMethod(__pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_15) < 0) __PYX_ERR(0, 2548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2548:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17CakeBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17CakeBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_17CakeBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17CakeBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2548, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2548, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2548, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.CakeBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17CakeBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17CakeBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.CakeBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_17CakeBlockRenderer_4generator28(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1037 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1037)) __PYX_ERR(0, 2548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1037);
  __Pyx_GIVEREF(__pyx_tuple__1037);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17CakeBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_CakeBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1038)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_codeobj__1038 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1037, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2548, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1038)) __PYX_ERR(0, 2548, __pyx_L1_error)
+2549:         return [mats["minecraft:cake"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_cake); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2550: 
+2551:     def makeCakeVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17CakeBlockRenderer_3makeCakeVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17CakeBlockRenderer_3makeCakeVertices = {"makeCakeVertices", (PyCFunction)__pyx_pw_9_renderer_17CakeBlockRenderer_3makeCakeVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17CakeBlockRenderer_3makeCakeVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeCakeVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCakeVertices", 1, 7, 7, 1); __PYX_ERR(0, 2551, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCakeVertices", 1, 7, 7, 2); __PYX_ERR(0, 2551, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCakeVertices", 1, 7, 7, 3); __PYX_ERR(0, 2551, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCakeVertices", 1, 7, 7, 4); __PYX_ERR(0, 2551, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCakeVertices", 1, 7, 7, 5); __PYX_ERR(0, 2551, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeCakeVertices", 1, 7, 7, 6); __PYX_ERR(0, 2551, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeCakeVertices") < 0)) __PYX_ERR(0, 2551, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeCakeVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2551, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.CakeBlockRenderer.makeCakeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17CakeBlockRenderer_2makeCakeVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17CakeBlockRenderer_2makeCakeVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_35_makeCakeVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeCakeVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_35_makeCakeVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_35_makeCakeVertices(__pyx_ptype_9_renderer___pyx_scope_struct_35_makeCakeVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_17CakeBlockRenderer_4generator28, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeCakeVertices, __pyx_n_s_CakeBlockRenderer_makeCakeVertic, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2551, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.CakeBlockRenderer.makeCakeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_17CakeBlockRenderer_4generator28(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2551, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makeCakeVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1039 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1039)) __PYX_ERR(0, 2551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1039);
  __Pyx_GIVEREF(__pyx_tuple__1039);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17CakeBlockRenderer_3makeCakeVertices, 0, __pyx_n_s_CakeBlockRenderer_makeCakeVertic, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1040)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeCakeVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2551, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_codeobj__1040 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1039, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeCakeVertices, 2551, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1040)) __PYX_ERR(0, 2551, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_35_makeCakeVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2552:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2553:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2554:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2555:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2555, __pyx_L1_error)
+2556:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2556, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2556, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2556, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2556, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2556, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2556, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2557: 
+2558:             blockIndices = materialIndices
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
+2559:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+2560:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_8);
    __pyx_t_7 = 0;
    __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
 2561: 
+2562:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
+2563:             if not len(vertexArray):
    __pyx_t_9 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 2563, __pyx_L1_error)
    __pyx_t_10 = ((!(__pyx_t_9 != 0)) != 0);
    if (__pyx_t_10) {
/* … */
    }
+2564:                 continue
      goto __pyx_L5_continue;
 2565: 
+2566:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], direction)[:, numpy.newaxis, 0:2]
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_9, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_9, __pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_9, __pyx_cur_scope->__pyx_v_direction);
    __pyx_t_4 = 0;
    __pyx_t_11 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__448 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__448)) __PYX_ERR(0, 2566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__448);
  __Pyx_GIVEREF(__pyx_slice__448);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__448);
    __Pyx_GIVEREF(__pyx_slice__448);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__448);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__449);
    __Pyx_GIVEREF(__pyx_slice__449);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__449);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8, __pyx_t_12) < 0)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_slice__449 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__449)) __PYX_ERR(0, 2566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__449);
  __Pyx_GIVEREF(__pyx_slice__449);
+2567:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__450, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_8, __pyx_t_3) < 0)) __PYX_ERR(0, 2567, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__450 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__450)) __PYX_ERR(0, 2567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__450);
  __Pyx_GIVEREF(__pyx_tuple__450);
 2568: 
+2569:             if direction == pymclevel.faces.FaceYIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2569, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2569, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2570:                 vertexArray[_XYZ][..., 1] -= 0.5
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2570, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2570, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_INCREF(__pyx_tuple__451);
      __pyx_t_15 = __pyx_tuple__451;
      __pyx_t_8 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2570, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2570, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_3) < 0)) __PYX_ERR(0, 2570, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__451 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__451)) __PYX_ERR(0, 2570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__451);
  __Pyx_GIVEREF(__pyx_tuple__451);
+2571:             if direction == pymclevel.faces.FaceXIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2571, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2571, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2571, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2571, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2571, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2572:                 vertexArray[_XYZ][..., 0] -= 0.063
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_INCREF(__pyx_tuple__452);
      __pyx_t_15 = __pyx_tuple__452;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_3, __pyx_float_0_063, 0.063, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_8) < 0)) __PYX_ERR(0, 2572, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__452 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__452)) __PYX_ERR(0, 2572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__452);
  __Pyx_GIVEREF(__pyx_tuple__452);
+2573:             if direction == pymclevel.faces.FaceXDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2573, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2573, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2574:                 vertexArray[_XYZ][..., 0] += 0.063
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2574, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2574, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_INCREF(__pyx_tuple__453);
      __pyx_t_15 = __pyx_tuple__453;
      __pyx_t_8 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2574, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyFloat_AddObjC(__pyx_t_8, __pyx_float_0_063, 0.063, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2574, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_3) < 0)) __PYX_ERR(0, 2574, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__453 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__453)) __PYX_ERR(0, 2574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__453);
  __Pyx_GIVEREF(__pyx_tuple__453);
+2575:             if direction == pymclevel.faces.FaceZIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2575, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2575, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2576:                 vertexArray[_XYZ][..., 2] -= 0.063
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2576, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2576, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_INCREF(__pyx_tuple__454);
      __pyx_t_15 = __pyx_tuple__454;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2576, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_3, __pyx_float_0_063, 0.063, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2576, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_8) < 0)) __PYX_ERR(0, 2576, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__454 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__454)) __PYX_ERR(0, 2576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__454);
  __Pyx_GIVEREF(__pyx_tuple__454);
+2577:             if direction == pymclevel.faces.FaceZDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2577, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2577, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2578:                 vertexArray[_XYZ][..., 2] += 0.063
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2578, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2578, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_INCREF(__pyx_tuple__455);
      __pyx_t_15 = __pyx_tuple__455;
      __pyx_t_8 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2578, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyFloat_AddObjC(__pyx_t_8, __pyx_float_0_063, 0.063, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2578, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_3) < 0)) __PYX_ERR(0, 2578, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__455 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__455)) __PYX_ERR(0, 2578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__455);
  __Pyx_GIVEREF(__pyx_tuple__455);
 2579: 
+2580:             append(vertexArray)
    __pyx_t_16 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 2580, __pyx_L1_error)
+2581:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L13_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2581, __pyx_L1_error)
+2582:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2582, __pyx_L1_error)
 2583: 
+2584:     makeVertices = makeCakeVertices
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeCakeVertices);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeCakeVertices);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
 2585: 
 2586: 
+2587: class RepeaterBlockRenderer(BlockRenderer):  # Sticks would be nice
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_RepeaterBlockRenderer, __pyx_n_s_RepeaterBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_RepeaterBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RepeaterBlockRenderer, __pyx_t_13) < 0) __PYX_ERR(0, 2587, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2588: 
+2589:     @classmethod
  __pyx_t_13 = __Pyx_Method_ClassMethod(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_13) < 0) __PYX_ERR(0, 2590, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2590:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21RepeaterBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21RepeaterBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_21RepeaterBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21RepeaterBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2590, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2590, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2590, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.RepeaterBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21RepeaterBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21RepeaterBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_block = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.RepeaterBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_block);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_21RepeaterBlockRenderer_4generator29(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1041 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_block); if (unlikely(!__pyx_tuple__1041)) __PYX_ERR(0, 2590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1041);
  __Pyx_GIVEREF(__pyx_tuple__1041);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21RepeaterBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_RepeaterBlockRenderer_getBlockty, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1042)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_codeobj__1042 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1041, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2590, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1042)) __PYX_ERR(0, 2590, __pyx_L1_error)
+2591:         return [block.ID for block in mats.blocksByType["THINSLICE"]]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_THINSLICE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2591, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2591, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2591, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2591, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2591, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2591, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_block, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_block, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 2591, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2592: 
+2593:     def makeRepeaterVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21RepeaterBlockRenderer_3makeRepeaterVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21RepeaterBlockRenderer_3makeRepeaterVertices = {"makeRepeaterVertices", (PyCFunction)__pyx_pw_9_renderer_21RepeaterBlockRenderer_3makeRepeaterVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21RepeaterBlockRenderer_3makeRepeaterVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeRepeaterVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRepeaterVertices", 1, 7, 7, 1); __PYX_ERR(0, 2593, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRepeaterVertices", 1, 7, 7, 2); __PYX_ERR(0, 2593, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRepeaterVertices", 1, 7, 7, 3); __PYX_ERR(0, 2593, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRepeaterVertices", 1, 7, 7, 4); __PYX_ERR(0, 2593, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRepeaterVertices", 1, 7, 7, 5); __PYX_ERR(0, 2593, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("makeRepeaterVertices", 1, 7, 7, 6); __PYX_ERR(0, 2593, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "makeRepeaterVertices") < 0)) __PYX_ERR(0, 2593, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeRepeaterVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2593, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.RepeaterBlockRenderer.makeRepeaterVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21RepeaterBlockRenderer_2makeRepeaterVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21RepeaterBlockRenderer_2makeRepeaterVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_36_makeRepeaterVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeRepeaterVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_36_makeRepeaterVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_36_makeRepeaterVertices(__pyx_ptype_9_renderer___pyx_scope_struct_36_makeRepeaterVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_21RepeaterBlockRenderer_4generator29, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeRepeaterVertices, __pyx_n_s_RepeaterBlockRenderer_makeRepeat, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2593, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.RepeaterBlockRenderer.makeRepeaterVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_21RepeaterBlockRenderer_4generator29(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2593, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("makeRepeaterVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1043 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_materialIndices, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_direction, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_lights, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1043)) __PYX_ERR(0, 2593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1043);
  __Pyx_GIVEREF(__pyx_tuple__1043);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21RepeaterBlockRenderer_3makeRepeaterVertices, 0, __pyx_n_s_RepeaterBlockRenderer_makeRepeat, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1044)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeRepeaterVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_codeobj__1044 = (PyObject*)__Pyx_PyCode_New(7, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1043, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeRepeaterVertices, 2593, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1044)) __PYX_ERR(0, 2593, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_36_makeRepeaterVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_direction;
  PyObject *__pyx_v_exposedFaceIndices;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_facingBlockLight;
  PyObject *__pyx_v_lights;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

+2594:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2595:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2596:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2597:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2597, __pyx_L1_error)
+2598:         for direction, exposedFaceIndices in enumerate(facingBlockIndices):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_facingBlockIndices)) {
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_facingBlockIndices; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_facingBlockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2598, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2598, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2598, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2598, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2598, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2598, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2598, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_exposedFaceIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_exposedFaceIndices, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_direction, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2598, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
    __pyx_L5_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2599: 
+2600:             blockIndices = materialIndices
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_blockIndices, __pyx_cur_scope->__pyx_v_materialIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_materialIndices);
+2601:             facingBlockLight = areaBlockLights[self.directionOffsets[direction]]
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_directionOffsets); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_direction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_facingBlockLight);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
+2602:             lights = facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_facingBlockLight, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_8);
    __pyx_t_7 = 0;
    __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lights);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lights, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
+2603:             vertexArray = self.makeTemplate(direction, blockIndices)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_cur_scope->__pyx_v_direction);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_blockIndices);
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
+2604:             if not len(vertexArray):
    __pyx_t_9 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 2604, __pyx_L1_error)
    __pyx_t_10 = ((!(__pyx_t_9 != 0)) != 0);
    if (__pyx_t_10) {
/* … */
    }
+2605:                 continue
      goto __pyx_L5_continue;
 2606: 
+2607:             vertexArray[_ST] += texMap(blocks[blockIndices], blockData[blockIndices], direction)[:, numpy.newaxis, 0:2]
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_13 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_14 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__pyx_t_13) {
      __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_9, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_9, __pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_direction);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_direction);
    PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_9, __pyx_cur_scope->__pyx_v_direction);
    __pyx_t_4 = 0;
    __pyx_t_11 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__456 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__456)) __PYX_ERR(0, 2607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__456);
  __Pyx_GIVEREF(__pyx_slice__456);
    __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_INCREF(__pyx_slice__456);
    __Pyx_GIVEREF(__pyx_slice__456);
    PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_slice__456);
    __Pyx_GIVEREF(__pyx_t_14);
    PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
    __Pyx_INCREF(__pyx_slice__457);
    __Pyx_GIVEREF(__pyx_slice__457);
    PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_slice__457);
    __pyx_t_14 = 0;
    __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8, __pyx_t_12) < 0)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_slice__457 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__457)) __PYX_ERR(0, 2607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__457);
  __Pyx_GIVEREF(__pyx_slice__457);
+2608:             vertexArray.view('uint8')[_RGB] *= lights
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2608, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__458, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2608, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2608, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2608, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_14, __pyx_cur_scope->__pyx_v_lights); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2608, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_8, __pyx_t_3) < 0)) __PYX_ERR(0, 2608, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__458 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__458)) __PYX_ERR(0, 2608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__458);
  __Pyx_GIVEREF(__pyx_tuple__458);
+2609:             if direction == pymclevel.faces.FaceYIncreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2609, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2609, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_10) {
/* … */
    }
+2610:                 vertexArray[_XYZ][..., 1] -= 0.875
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_INCREF(__pyx_tuple__459);
      __pyx_t_15 = __pyx_tuple__459;
      __pyx_t_8 = PyObject_GetItem(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_875, 0.875, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_t_15, __pyx_t_3) < 0)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_tuple__459 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__459)) __PYX_ERR(0, 2610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__459);
  __Pyx_GIVEREF(__pyx_tuple__459);
 2611: 
+2612:             if direction != pymclevel.faces.FaceYIncreasing and direction != pymclevel.faces.FaceYDecreasing:
    __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_16) {
    } else {
      __pyx_t_10 = __pyx_t_16;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_FaceYDecreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_direction, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_10 = __pyx_t_16;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_10) {
/* … */
    }
+2613:                 vertexArray[_XYZ][..., 2:4, 1] -= 0.875
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2613, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2613, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
  __pyx_slice__460 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__460)) __PYX_ERR(0, 2613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__460);
  __Pyx_GIVEREF(__pyx_slice__460);
      __Pyx_INCREF(__pyx_tuple__461);
      __pyx_t_15 = __pyx_tuple__461;
      __pyx_t_12 = PyObject_GetItem(__pyx_t_3, __pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2613, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_12, __pyx_float_0_875, 0.875, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2613, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_15, __pyx_t_8) < 0)) __PYX_ERR(0, 2613, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__461 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__460, __pyx_int_1); if (unlikely(!__pyx_tuple__461)) __PYX_ERR(0, 2613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__461);
  __Pyx_GIVEREF(__pyx_tuple__461);
+2614:                 vertexArray[_ST][..., 2:4, 1] += 14
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__462 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__462)) __PYX_ERR(0, 2614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__462);
  __Pyx_GIVEREF(__pyx_slice__462);
      __Pyx_INCREF(__pyx_tuple__463);
      __pyx_t_15 = __pyx_tuple__463;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_8, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_14, 14, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_15, __pyx_t_12) < 0)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__463 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__462, __pyx_int_1); if (unlikely(!__pyx_tuple__463)) __PYX_ERR(0, 2614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__463);
  __Pyx_GIVEREF(__pyx_tuple__463);
 2615: 
+2616:             append(vertexArray)
    __pyx_t_17 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 2616, __pyx_L1_error)
+2617:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __Pyx_XGIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L12_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2617, __pyx_L1_error)
+2618:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2618, __pyx_L1_error)
 2619: 
+2620:     makeVertices = makeRepeaterVertices
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_makeRepeaterVertices);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeRepeaterVertices);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2620, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 2621: 
 2622: 
+2623: class RedstoneBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_RedstoneBlockRenderer, __pyx_n_s_RedstoneBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_15 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_RedstoneBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RedstoneBlockRenderer, __pyx_t_15) < 0) __PYX_ERR(0, 2623, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2624:     @classmethod
  __pyx_t_15 = __Pyx_Method_ClassMethod(__pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_15) < 0) __PYX_ERR(0, 2625, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2625:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21RedstoneBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21RedstoneBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_21RedstoneBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21RedstoneBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2625, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2625, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2625, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.RedstoneBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21RedstoneBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21RedstoneBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.RedstoneBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_21RedstoneBlockRenderer_4generator30(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1045 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1045)) __PYX_ERR(0, 2625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1045);
  __Pyx_GIVEREF(__pyx_tuple__1045);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21RedstoneBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_RedstoneBlockRenderer_getBlockty, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1046)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_codeobj__1046 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1045, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2625, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1046)) __PYX_ERR(0, 2625, __pyx_L1_error)
+2626:         return [mats["minecraft:redstone_wire"].ID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_redstone_wire); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2627: 
+2628:     def redstoneVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_21RedstoneBlockRenderer_3redstoneVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_21RedstoneBlockRenderer_3redstoneVertices = {"redstoneVertices", (PyCFunction)__pyx_pw_9_renderer_21RedstoneBlockRenderer_3redstoneVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_21RedstoneBlockRenderer_3redstoneVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  CYTHON_UNUSED PyObject *__pyx_v_areaBlockLights = 0;
  CYTHON_UNUSED PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("redstoneVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("redstoneVertices", 1, 7, 7, 1); __PYX_ERR(0, 2628, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("redstoneVertices", 1, 7, 7, 2); __PYX_ERR(0, 2628, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("redstoneVertices", 1, 7, 7, 3); __PYX_ERR(0, 2628, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("redstoneVertices", 1, 7, 7, 4); __PYX_ERR(0, 2628, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("redstoneVertices", 1, 7, 7, 5); __PYX_ERR(0, 2628, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("redstoneVertices", 1, 7, 7, 6); __PYX_ERR(0, 2628, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "redstoneVertices") < 0)) __PYX_ERR(0, 2628, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("redstoneVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2628, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.RedstoneBlockRenderer.redstoneVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_21RedstoneBlockRenderer_2redstoneVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_21RedstoneBlockRenderer_2redstoneVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices, CYTHON_UNUSED PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, CYTHON_UNUSED PyObject *__pyx_v_areaBlockLights, CYTHON_UNUSED PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_37_redstoneVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("redstoneVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_37_redstoneVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_37_redstoneVertices(__pyx_ptype_9_renderer___pyx_scope_struct_37_redstoneVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_21RedstoneBlockRenderer_4generator30, (PyObject *) __pyx_cur_scope, __pyx_n_s_redstoneVertices, __pyx_n_s_RedstoneBlockRenderer_redstoneVe, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2628, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.RedstoneBlockRenderer.redstoneVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_21RedstoneBlockRenderer_4generator30(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2628, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("redstoneVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1047 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_blockIndices, __pyx_n_s_vertexArray, __pyx_n_s_bdata); if (unlikely(!__pyx_tuple__1047)) __PYX_ERR(0, 2628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1047);
  __Pyx_GIVEREF(__pyx_tuple__1047);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_21RedstoneBlockRenderer_3redstoneVertices, 0, __pyx_n_s_RedstoneBlockRenderer_redstoneVe, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1048)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_redstoneVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2628, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_codeobj__1048 = (PyObject*)__Pyx_PyCode_New(7, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1047, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_redstoneVertices, 2628, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1048)) __PYX_ERR(0, 2628, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_37_redstoneVertices {
  PyObject_HEAD
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_bdata;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockIndices;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
};

+2629:         blockIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_blockIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2630:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2630, __pyx_L1_error)
+2631:         vertexArray = self.makeTemplate(pymclevel.faces.FaceYIncreasing, blockIndices)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_4);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockIndices);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_blockIndices);
  __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_vertexArray = __pyx_t_1;
  __pyx_t_1 = 0;
+2632:         if not len(vertexArray):
  __pyx_t_5 = PyObject_Length(__pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 2632, __pyx_L1_error)
  __pyx_t_7 = ((!(__pyx_t_5 != 0)) != 0);
  if (__pyx_t_7) {
/* … */
  }
+2633:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;
 2634: 
+2635:         vertexArray[_ST] += alphaMaterials.blockTextures[55, 0, 0]
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_blockTextures); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_GetItem(__pyx_t_4, __pyx_tuple__464); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_1, __pyx_t_4) < 0)) __PYX_ERR(0, 2635, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__464 = PyTuple_Pack(3, __pyx_int_55, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__464)) __PYX_ERR(0, 2635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__464);
  __Pyx_GIVEREF(__pyx_tuple__464);
+2636:         vertexArray[_XYZ][..., 1] -= 0.9
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(__pyx_tuple__465);
  __pyx_t_8 = __pyx_tuple__465;
  __pyx_t_1 = PyObject_GetItem(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyFloat_SubtractObjC(__pyx_t_1, __pyx_float_0_9, 0.9, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_8, __pyx_t_6) < 0)) __PYX_ERR(0, 2636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__465 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__465)) __PYX_ERR(0, 2636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__465);
  __Pyx_GIVEREF(__pyx_tuple__465);
 2637: 
+2638:         bdata = blockData[blockIndices]
  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_bdata = __pyx_t_4;
  __pyx_t_4 = 0;
 2639: 
+2640:         bdata <<= 3
  __pyx_t_4 = PyNumber_InPlaceLshift(__pyx_cur_scope->__pyx_v_bdata, __pyx_int_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_bdata);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_bdata, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
 2641:         # bdata &= 0xe0
+2642:         bdata[bdata > 0] |= 0x80
  __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_bdata, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2642, __pyx_L1_error)
  __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_bdata, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyInt_OrObjC(__pyx_t_6, __pyx_int_128, 0x80, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_bdata, __pyx_t_4, __pyx_t_1) < 0)) __PYX_ERR(0, 2642, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 2643: 
+2644:         vertexArray.view('uint8')[_RGBA][..., 0] = bdata[..., numpy.newaxis]
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_bdata, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__466, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGBA); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__466 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__466)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__466);
  __Pyx_GIVEREF(__pyx_tuple__466);
  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_tuple__467, __pyx_t_1) < 0)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__467 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__467)) __PYX_ERR(0, 2644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__467);
  __Pyx_GIVEREF(__pyx_tuple__467);
+2645:         vertexArray.view('uint8')[_RGBA][..., 0:3] = vertexArray.view('uint8')[_RGBA][..., 0:3] * [1, 0, 0]
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__468, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGBA); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__468 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__468)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__468);
  __Pyx_GIVEREF(__pyx_tuple__468);
  __pyx_slice__469 = PySlice_New(__pyx_int_0, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__469)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__469);
  __Pyx_GIVEREF(__pyx_slice__469);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_4, __pyx_tuple__470); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_int_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_int_0);
  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_tuple__470 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__469); if (unlikely(!__pyx_tuple__470)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__470);
  __Pyx_GIVEREF(__pyx_tuple__470);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__471, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGBA); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__471 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__471)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__471);
  __Pyx_GIVEREF(__pyx_tuple__471);
  __pyx_slice__472 = PySlice_New(__pyx_int_0, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__472)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__472);
  __Pyx_GIVEREF(__pyx_slice__472);
  if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_tuple__473, __pyx_t_2) < 0)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_tuple__473 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__472); if (unlikely(!__pyx_tuple__473)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__473);
  __Pyx_GIVEREF(__pyx_tuple__473);
 2646: 
+2647:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L6_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2647, __pyx_L1_error)
+2648:         self.vertexArrays = [vertexArray]
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_vertexArray);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_vertexArray);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_vertexArray);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_t_2) < 0) __PYX_ERR(0, 2648, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 2649: 
+2650:     makeVertices = redstoneVertices
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_redstoneVertices);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_redstoneVertices);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_15) < 0) __PYX_ERR(0, 2650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
 2651: 
 2652: 
 2653: # button, floor plate, door -> 1-cube features
 2654: 
+2655: class DoorRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_DoorRenderer, __pyx_n_s_DoorRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_DoorRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DoorRenderer, __pyx_t_13) < 0) __PYX_ERR(0, 2655, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2656:     @classmethod
  __pyx_t_13 = __Pyx_Method_ClassMethod(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_13) < 0) __PYX_ERR(0, 2657, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2657:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_12DoorRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_12DoorRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_12DoorRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_12DoorRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2657, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2657, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2657, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.DoorRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_12DoorRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_12DoorRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_block = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.DoorRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_block);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1049 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_block); if (unlikely(!__pyx_tuple__1049)) __PYX_ERR(0, 2657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1049);
  __Pyx_GIVEREF(__pyx_tuple__1049);
/* … */
  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_12DoorRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_DoorRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1050)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_codeobj__1050 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1049, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2657, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1050)) __PYX_ERR(0, 2657, __pyx_L1_error)
+2658:         cls.blocktypes = [block.ID for block in mats.blocksByType["DOOR"]]
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_DOOR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2658, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2658, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2658, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2658, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2658, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2658, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2658, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_block, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_block, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2658, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 2658, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_blocktypes, __pyx_t_1) < 0) __PYX_ERR(0, 2658, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2659:         return cls.blocktypes
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_blocktypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2660: 
+2661:     doorTemplate = makeVertexTemplatesFromJsonModel(
  __pyx_t_15 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__1051, __pyx_tuple__1052, __pyx_t_13)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_doorTemplate, __pyx_t_15) < 0) __PYX_ERR(0, 2661, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2662:         (0, 0, 0), (3, 16, 16),
  __pyx_tuple__1051 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__1051)) __PYX_ERR(0, 2662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1051);
  __Pyx_GIVEREF(__pyx_tuple__1051);
  __pyx_tuple__1052 = PyTuple_Pack(3, __pyx_int_3, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1052)) __PYX_ERR(0, 2662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1052);
  __Pyx_GIVEREF(__pyx_tuple__1052);
 2663:         {
+2664:             "down": (13, 0, 16, 16),
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_down, __pyx_tuple__1053) < 0) __PYX_ERR(0, 2664, __pyx_L1_error)
/* … */
  __pyx_tuple__1053 = PyTuple_Pack(4, __pyx_int_13, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1053)) __PYX_ERR(0, 2664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1053);
  __Pyx_GIVEREF(__pyx_tuple__1053);
 2665:             # TODO handle faces that should not appear
+2666:             "up": (13, 0, 16, 16),
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_up, __pyx_tuple__1054) < 0) __PYX_ERR(0, 2664, __pyx_L1_error)
/* … */
  __pyx_tuple__1054 = PyTuple_Pack(4, __pyx_int_13, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1054)) __PYX_ERR(0, 2666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1054);
  __Pyx_GIVEREF(__pyx_tuple__1054);
+2667:             "north": (3, 0, 0, 16),
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_north, __pyx_tuple__1055) < 0) __PYX_ERR(0, 2664, __pyx_L1_error)
/* … */
  __pyx_tuple__1055 = PyTuple_Pack(4, __pyx_int_3, __pyx_int_0, __pyx_int_0, __pyx_int_16); if (unlikely(!__pyx_tuple__1055)) __PYX_ERR(0, 2667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1055);
  __Pyx_GIVEREF(__pyx_tuple__1055);
+2668:             "south": (0, 0, 3, 16),
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_south, __pyx_tuple__1056) < 0) __PYX_ERR(0, 2664, __pyx_L1_error)
/* … */
  __pyx_tuple__1056 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_3, __pyx_int_16); if (unlikely(!__pyx_tuple__1056)) __PYX_ERR(0, 2668, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1056);
  __Pyx_GIVEREF(__pyx_tuple__1056);
+2669:             "west": (0, 0, 16, 16),
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_west, __pyx_tuple__1057) < 0) __PYX_ERR(0, 2664, __pyx_L1_error)
/* … */
  __pyx_tuple__1057 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1057)) __PYX_ERR(0, 2669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1057);
  __Pyx_GIVEREF(__pyx_tuple__1057);
+2670:             "east": (16, 0, 0, 16)
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_east, __pyx_tuple__1058) < 0) __PYX_ERR(0, 2664, __pyx_L1_error)
/* … */
  __pyx_tuple__1058 = PyTuple_Pack(4, __pyx_int_16, __pyx_int_0, __pyx_int_0, __pyx_int_16); if (unlikely(!__pyx_tuple__1058)) __PYX_ERR(0, 2670, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1058);
  __Pyx_GIVEREF(__pyx_tuple__1058);
 2671:         }
 2672:     )
 2673: 
+2674:     doorRHTemplate = makeVertexTemplatesFromJsonModel(
  __pyx_t_13 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__1059, __pyx_tuple__1060, __pyx_t_15)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2674, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate, __pyx_t_13) < 0) __PYX_ERR(0, 2674, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2675:         (0, 0, 0), (3, 16, 16),
  __pyx_tuple__1059 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__1059)) __PYX_ERR(0, 2675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1059);
  __Pyx_GIVEREF(__pyx_tuple__1059);
  __pyx_tuple__1060 = PyTuple_Pack(3, __pyx_int_3, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1060)) __PYX_ERR(0, 2675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1060);
  __Pyx_GIVEREF(__pyx_tuple__1060);
 2676:         {
+2677:             "down": (13, 0, 16, 16),
  __pyx_t_15 = PyDict_New(); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_down, __pyx_tuple__1061) < 0) __PYX_ERR(0, 2677, __pyx_L1_error)
/* … */
  __pyx_tuple__1061 = PyTuple_Pack(4, __pyx_int_13, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1061)) __PYX_ERR(0, 2677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1061);
  __Pyx_GIVEREF(__pyx_tuple__1061);
 2678:             # TODO handle faces that should not appear
+2679:             "up": (13, 0, 16, 16),
  if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_up, __pyx_tuple__1062) < 0) __PYX_ERR(0, 2677, __pyx_L1_error)
/* … */
  __pyx_tuple__1062 = PyTuple_Pack(4, __pyx_int_13, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1062)) __PYX_ERR(0, 2679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1062);
  __Pyx_GIVEREF(__pyx_tuple__1062);
+2680:             "north": (3, 0, 0, 16),
  if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_north, __pyx_tuple__1063) < 0) __PYX_ERR(0, 2677, __pyx_L1_error)
/* … */
  __pyx_tuple__1063 = PyTuple_Pack(4, __pyx_int_3, __pyx_int_0, __pyx_int_0, __pyx_int_16); if (unlikely(!__pyx_tuple__1063)) __PYX_ERR(0, 2680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1063);
  __Pyx_GIVEREF(__pyx_tuple__1063);
+2681:             "south": (0, 0, 3, 16),
  if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_south, __pyx_tuple__1064) < 0) __PYX_ERR(0, 2677, __pyx_L1_error)
/* … */
  __pyx_tuple__1064 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_3, __pyx_int_16); if (unlikely(!__pyx_tuple__1064)) __PYX_ERR(0, 2681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1064);
  __Pyx_GIVEREF(__pyx_tuple__1064);
+2682:             "west": (16, 0, 0, 16),
  if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_west, __pyx_tuple__1065) < 0) __PYX_ERR(0, 2677, __pyx_L1_error)
/* … */
  __pyx_tuple__1065 = PyTuple_Pack(4, __pyx_int_16, __pyx_int_0, __pyx_int_0, __pyx_int_16); if (unlikely(!__pyx_tuple__1065)) __PYX_ERR(0, 2682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1065);
  __Pyx_GIVEREF(__pyx_tuple__1065);
+2683:             "east": (0, 0, 16, 16)
  if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_east, __pyx_tuple__1066) < 0) __PYX_ERR(0, 2677, __pyx_L1_error)
/* … */
  __pyx_tuple__1066 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1066)) __PYX_ERR(0, 2683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1066);
  __Pyx_GIVEREF(__pyx_tuple__1066);
 2684:         }
 2685:     )
 2686: 
+2687:     doorTemplates = numpy.array([
  __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
/* … */
  __pyx_t_39 = PyList_New(32); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_15);
  PyList_SET_ITEM(__pyx_t_39, 0, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_24);
  PyList_SET_ITEM(__pyx_t_39, 1, __pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_14);
  PyList_SET_ITEM(__pyx_t_39, 2, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_12);
  PyList_SET_ITEM(__pyx_t_39, 3, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_39, 4, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_39, 5, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_21);
  PyList_SET_ITEM(__pyx_t_39, 6, __pyx_t_21);
  __Pyx_GIVEREF(__pyx_t_11);
  PyList_SET_ITEM(__pyx_t_39, 7, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_39, 8, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_19);
  PyList_SET_ITEM(__pyx_t_39, 9, __pyx_t_19);
  __Pyx_GIVEREF(__pyx_t_20);
  PyList_SET_ITEM(__pyx_t_39, 10, __pyx_t_20);
  __Pyx_GIVEREF(__pyx_t_7);
  PyList_SET_ITEM(__pyx_t_39, 11, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_39, 12, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_22);
  PyList_SET_ITEM(__pyx_t_39, 13, __pyx_t_22);
  __Pyx_GIVEREF(__pyx_t_23);
  PyList_SET_ITEM(__pyx_t_39, 14, __pyx_t_23);
  __Pyx_GIVEREF(__pyx_t_18);
  PyList_SET_ITEM(__pyx_t_39, 15, __pyx_t_18);
  __Pyx_GIVEREF(__pyx_t_25);
  PyList_SET_ITEM(__pyx_t_39, 16, __pyx_t_25);
  __Pyx_GIVEREF(__pyx_t_27);
  PyList_SET_ITEM(__pyx_t_39, 17, __pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_28);
  PyList_SET_ITEM(__pyx_t_39, 18, __pyx_t_28);
  __Pyx_GIVEREF(__pyx_t_29);
  PyList_SET_ITEM(__pyx_t_39, 19, __pyx_t_29);
  __Pyx_GIVEREF(__pyx_t_30);
  PyList_SET_ITEM(__pyx_t_39, 20, __pyx_t_30);
  __Pyx_GIVEREF(__pyx_t_26);
  PyList_SET_ITEM(__pyx_t_39, 21, __pyx_t_26);
  __Pyx_GIVEREF(__pyx_t_32);
  PyList_SET_ITEM(__pyx_t_39, 22, __pyx_t_32);
  __Pyx_GIVEREF(__pyx_t_33);
  PyList_SET_ITEM(__pyx_t_39, 23, __pyx_t_33);
  __Pyx_GIVEREF(__pyx_t_31);
  PyList_SET_ITEM(__pyx_t_39, 24, __pyx_t_31);
  __Pyx_GIVEREF(__pyx_t_35);
  PyList_SET_ITEM(__pyx_t_39, 25, __pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_36);
  PyList_SET_ITEM(__pyx_t_39, 26, __pyx_t_36);
  __Pyx_GIVEREF(__pyx_t_37);
  PyList_SET_ITEM(__pyx_t_39, 27, __pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_38);
  PyList_SET_ITEM(__pyx_t_39, 28, __pyx_t_38);
  __Pyx_GIVEREF(__pyx_t_34);
  PyList_SET_ITEM(__pyx_t_39, 29, __pyx_t_34);
  __Pyx_GIVEREF(__pyx_t_40);
  PyList_SET_ITEM(__pyx_t_39, 30, __pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_41);
  PyList_SET_ITEM(__pyx_t_39, 31, __pyx_t_41);
  __pyx_t_15 = 0;
  __pyx_t_24 = 0;
  __pyx_t_14 = 0;
  __pyx_t_12 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_21 = 0;
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
  __pyx_t_19 = 0;
  __pyx_t_20 = 0;
  __pyx_t_7 = 0;
  __pyx_t_4 = 0;
  __pyx_t_22 = 0;
  __pyx_t_23 = 0;
  __pyx_t_18 = 0;
  __pyx_t_25 = 0;
  __pyx_t_27 = 0;
  __pyx_t_28 = 0;
  __pyx_t_29 = 0;
  __pyx_t_30 = 0;
  __pyx_t_26 = 0;
  __pyx_t_32 = 0;
  __pyx_t_33 = 0;
  __pyx_t_31 = 0;
  __pyx_t_35 = 0;
  __pyx_t_36 = 0;
  __pyx_t_37 = 0;
  __pyx_t_38 = 0;
  __pyx_t_34 = 0;
  __pyx_t_40 = 0;
  __pyx_t_41 = 0;
  __pyx_t_41 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_41 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_41)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_41);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_41) {
    __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_39); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2687, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
    __Pyx_GOTREF(__pyx_t_13);
  } else {
    __pyx_t_40 = PyTuple_New(1+1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    __Pyx_GIVEREF(__pyx_t_41); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_41); __pyx_t_41 = NULL;
    __Pyx_GIVEREF(__pyx_t_39);
    PyTuple_SET_ITEM(__pyx_t_40, 0+1, __pyx_t_39);
    __pyx_t_39 = 0;
    __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_40, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_doorTemplates, __pyx_t_13) < 0) __PYX_ERR(0, 2687, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 2688:         # lower hinge left
+2689:         doorTemplate,
  __pyx_t_15 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_15)) {
    PyErr_Clear();
    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
+2690:         rotateTemplate(doorTemplate, x=0, y=90),
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2690, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_24 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_11), &__pyx_t_17)); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2691:         rotateTemplate(doorTemplate, x=0, y=180),
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2691, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_14 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_11), &__pyx_t_17)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2692:         rotateTemplate(doorTemplate, x=0, y=270),
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2692, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_12 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_11), &__pyx_t_17)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2693:         rotateTemplate(doorRHTemplate, x=0, y=90),
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2693, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_5 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_11), &__pyx_t_17)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2694:         rotateTemplate(doorRHTemplate, x=0, y=180),
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2694, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_6 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_11), &__pyx_t_17)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2695:         rotateTemplate(doorRHTemplate, x=0, y=270),
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2695, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_21 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_11), &__pyx_t_17)); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2696:         doorRHTemplate,
  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_11)) {
    PyErr_Clear();
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
 2697:         # upper hinge left
+2698:         doorTemplate,
  __pyx_t_10 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_10)) {
    PyErr_Clear();
    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
+2699:         rotateTemplate(doorTemplate, x=0, y=90),
  __pyx_t_18 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_18)) {
    PyErr_Clear();
    __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (!(likely(((__pyx_t_18) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_18, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2699, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_19 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_18), &__pyx_t_17)); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+2700:         rotateTemplate(doorTemplate, x=0, y=180),
  __pyx_t_18 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_18)) {
    PyErr_Clear();
    __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (!(likely(((__pyx_t_18) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_18, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2700, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_20 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_18), &__pyx_t_17)); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 2700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+2701:         rotateTemplate(doorTemplate, x=0, y=270),
  __pyx_t_18 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_18)) {
    PyErr_Clear();
    __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (!(likely(((__pyx_t_18) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_18, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2701, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_7 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_18), &__pyx_t_17)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+2702:         rotateTemplate(doorRHTemplate, x=0, y=90),
  __pyx_t_18 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_18)) {
    PyErr_Clear();
    __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (!(likely(((__pyx_t_18) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_18, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2702, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_4 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_18), &__pyx_t_17)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+2703:         rotateTemplate(doorRHTemplate, x=0, y=180),
  __pyx_t_18 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_18)) {
    PyErr_Clear();
    __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (!(likely(((__pyx_t_18) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_18, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2703, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_22 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_18), &__pyx_t_17)); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+2704:         rotateTemplate(doorRHTemplate, x=0, y=270),
  __pyx_t_18 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_18)) {
    PyErr_Clear();
    __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (!(likely(((__pyx_t_18) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_18, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2704, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_23 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_18), &__pyx_t_17)); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+2705:         doorRHTemplate,
  __pyx_t_18 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_18)) {
    PyErr_Clear();
    __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
 2706:         # lower hinge right
+2707:         doorRHTemplate,
  __pyx_t_25 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_25)) {
    PyErr_Clear();
    __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
+2708:         rotateTemplate(doorRHTemplate, x=0, y=90),
  __pyx_t_26 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_26)) {
    PyErr_Clear();
    __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2708, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2708, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_27 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_26), &__pyx_t_17)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2708, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
+2709:         rotateTemplate(doorRHTemplate, x=0, y=180),
  __pyx_t_26 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_26)) {
    PyErr_Clear();
    __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2709, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_28 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_26), &__pyx_t_17)); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 2709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_28);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
+2710:         rotateTemplate(doorRHTemplate, x=0, y=270),
  __pyx_t_26 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_26)) {
    PyErr_Clear();
    __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2710, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_29 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_26), &__pyx_t_17)); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 2710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_29);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
+2711:         rotateTemplate(doorTemplate, x=0, y=270),
  __pyx_t_26 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_26)) {
    PyErr_Clear();
    __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2711, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_30 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_26), &__pyx_t_17)); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 2711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_30);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
+2712:         doorTemplate,
  __pyx_t_26 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_26)) {
    PyErr_Clear();
    __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
+2713:         rotateTemplate(doorTemplate, x=0, y=90),
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
  if (!(likely(((__pyx_t_31) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_31, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2713, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_32 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_31), &__pyx_t_17)); if (unlikely(!__pyx_t_32)) __PYX_ERR(0, 2713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_32);
  __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
+2714:         rotateTemplate(doorTemplate, x=0, y=180),
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
  if (!(likely(((__pyx_t_31) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_31, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2714, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_33 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_31), &__pyx_t_17)); if (unlikely(!__pyx_t_33)) __PYX_ERR(0, 2714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_33);
  __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
 2715:         # upper hinge right
+2716:         doorRHTemplate,
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
+2717:         rotateTemplate(doorRHTemplate, x=0, y=90),
  __pyx_t_34 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_34)) {
    PyErr_Clear();
    __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  if (!(likely(((__pyx_t_34) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_34, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2717, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_35 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_34), &__pyx_t_17)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 2717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
+2718:         rotateTemplate(doorRHTemplate, x=0, y=180),
  __pyx_t_34 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_34)) {
    PyErr_Clear();
    __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  if (!(likely(((__pyx_t_34) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_34, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2718, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_36 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_34), &__pyx_t_17)); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 2718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
+2719:         rotateTemplate(doorRHTemplate, x=0, y=270),
  __pyx_t_34 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorRHTemplate);
  if (unlikely(!__pyx_t_34)) {
    PyErr_Clear();
    __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorRHTemplate);
  }
  if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  if (!(likely(((__pyx_t_34) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_34, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2719, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_37 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_34), &__pyx_t_17)); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
+2720:         rotateTemplate(doorTemplate, x=0, y=270),
  __pyx_t_34 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_34)) {
    PyErr_Clear();
    __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  if (!(likely(((__pyx_t_34) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_34, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2720, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_38 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_34), &__pyx_t_17)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
+2721:         doorTemplate,
  __pyx_t_34 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_34)) {
    PyErr_Clear();
    __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
+2722:         rotateTemplate(doorTemplate, x=0, y=90),
  __pyx_t_39 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_39)) {
    PyErr_Clear();
    __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  if (!(likely(((__pyx_t_39) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_39, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2722, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_40 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_39), &__pyx_t_17)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
+2723:         rotateTemplate(doorTemplate, x=0, y=180),
  __pyx_t_39 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplate);
  if (unlikely(!__pyx_t_39)) {
    PyErr_Clear();
    __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplate);
  }
  if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  if (!(likely(((__pyx_t_39) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_39, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2723, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_41 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_39), &__pyx_t_17)); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
 2724:     ])
 2725: 
+2726:     makeVertices = makeVerticesFromModel(doorTemplates, 31)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeVerticesFromModel); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_doorTemplates);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_doorTemplates);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_39 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_39)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_39);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_41 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
  if (__pyx_t_39) {
    __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_41, 0, __pyx_t_39); __pyx_t_39 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_40);
  PyTuple_SET_ITEM(__pyx_t_41, 0+__pyx_t_9, __pyx_t_40);
  __Pyx_INCREF(__pyx_int_31);
  __Pyx_GIVEREF(__pyx_int_31);
  PyTuple_SET_ITEM(__pyx_t_41, 1+__pyx_t_9, __pyx_int_31);
  __pyx_t_40 = 0;
  __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_41, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_13) < 0) __PYX_ERR(0, 2726, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 2727: 
 2728: 
+2729: class ButtonRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_ButtonRenderer, __pyx_n_s_ButtonRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_ButtonRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ButtonRenderer, __pyx_t_8) < 0) __PYX_ERR(0, 2729, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2730:     @classmethod
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_8) < 0) __PYX_ERR(0, 2731, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2731:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_14ButtonRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_14ButtonRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_14ButtonRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_14ButtonRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2731, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2731, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2731, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.ButtonRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_14ButtonRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_14ButtonRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.ButtonRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1067 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_a); if (unlikely(!__pyx_tuple__1067)) __PYX_ERR(0, 2731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1067);
  __Pyx_GIVEREF(__pyx_tuple__1067);
/* … */
  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_14ButtonRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_ButtonRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1068)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_codeobj__1068 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1067, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2731, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1068)) __PYX_ERR(0, 2731, __pyx_L1_error)
+2732:         return [a.ID for a in mats.blocksByType["BUTTON"]]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_BUTTON); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2732, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2732, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2732, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2732, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2732, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2732, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2732, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2732, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 2732, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2733: 
+2734:     buttonTemplate = makeVertexTemplatesFromJsonModel((5, 0, 6), (11, 2, 10), {
  __pyx_tuple__1069 = PyTuple_Pack(3, __pyx_int_5, __pyx_int_0, __pyx_int_6); if (unlikely(!__pyx_tuple__1069)) __PYX_ERR(0, 2734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1069);
  __Pyx_GIVEREF(__pyx_tuple__1069);
  __pyx_tuple__1070 = PyTuple_Pack(3, __pyx_int_11, __pyx_int_2, __pyx_int_10); if (unlikely(!__pyx_tuple__1070)) __PYX_ERR(0, 2734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1070);
  __Pyx_GIVEREF(__pyx_tuple__1070);
/* … */
  __pyx_t_13 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__1069, __pyx_tuple__1070, __pyx_t_8)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_buttonTemplate, __pyx_t_13) < 0) __PYX_ERR(0, 2734, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2735:         "down": (5, 6, 11, 10),
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_down, __pyx_tuple__1071) < 0) __PYX_ERR(0, 2735, __pyx_L1_error)
/* … */
  __pyx_tuple__1071 = PyTuple_Pack(4, __pyx_int_5, __pyx_int_6, __pyx_int_11, __pyx_int_10); if (unlikely(!__pyx_tuple__1071)) __PYX_ERR(0, 2735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1071);
  __Pyx_GIVEREF(__pyx_tuple__1071);
+2736:         "up": (5, 10, 11, 6),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_up, __pyx_tuple__1072) < 0) __PYX_ERR(0, 2735, __pyx_L1_error)
/* … */
  __pyx_tuple__1072 = PyTuple_Pack(4, __pyx_int_5, __pyx_int_10, __pyx_int_11, __pyx_int_6); if (unlikely(!__pyx_tuple__1072)) __PYX_ERR(0, 2736, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1072);
  __Pyx_GIVEREF(__pyx_tuple__1072);
+2737:         "north": (5, 14, 11, 16),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_north, __pyx_tuple__1073) < 0) __PYX_ERR(0, 2735, __pyx_L1_error)
/* … */
  __pyx_tuple__1073 = PyTuple_Pack(4, __pyx_int_5, __pyx_int_14, __pyx_int_11, __pyx_int_16); if (unlikely(!__pyx_tuple__1073)) __PYX_ERR(0, 2737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1073);
  __Pyx_GIVEREF(__pyx_tuple__1073);
+2738:         "south": (5, 14, 11, 16),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_south, __pyx_tuple__1074) < 0) __PYX_ERR(0, 2735, __pyx_L1_error)
/* … */
  __pyx_tuple__1074 = PyTuple_Pack(4, __pyx_int_5, __pyx_int_14, __pyx_int_11, __pyx_int_16); if (unlikely(!__pyx_tuple__1074)) __PYX_ERR(0, 2738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1074);
  __Pyx_GIVEREF(__pyx_tuple__1074);
+2739:         "west": (6, 14, 10, 16),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_west, __pyx_tuple__1075) < 0) __PYX_ERR(0, 2735, __pyx_L1_error)
/* … */
  __pyx_tuple__1075 = PyTuple_Pack(4, __pyx_int_6, __pyx_int_14, __pyx_int_10, __pyx_int_16); if (unlikely(!__pyx_tuple__1075)) __PYX_ERR(0, 2739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1075);
  __Pyx_GIVEREF(__pyx_tuple__1075);
+2740:         "east": (6, 14, 10, 16)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_east, __pyx_tuple__1076) < 0) __PYX_ERR(0, 2735, __pyx_L1_error)
/* … */
  __pyx_tuple__1076 = PyTuple_Pack(4, __pyx_int_6, __pyx_int_14, __pyx_int_10, __pyx_int_16); if (unlikely(!__pyx_tuple__1076)) __PYX_ERR(0, 2740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1076);
  __Pyx_GIVEREF(__pyx_tuple__1076);
 2741:     })
 2742: 
+2743:     buttonTemplatePressed = makeVertexTemplatesFromJsonModel((5, 0, 6), (11, 1, 10), {
  __pyx_tuple__1077 = PyTuple_Pack(3, __pyx_int_5, __pyx_int_0, __pyx_int_6); if (unlikely(!__pyx_tuple__1077)) __PYX_ERR(0, 2743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1077);
  __Pyx_GIVEREF(__pyx_tuple__1077);
  __pyx_tuple__1078 = PyTuple_Pack(3, __pyx_int_11, __pyx_int_1, __pyx_int_10); if (unlikely(!__pyx_tuple__1078)) __PYX_ERR(0, 2743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1078);
  __Pyx_GIVEREF(__pyx_tuple__1078);
/* … */
  __pyx_t_8 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__1077, __pyx_tuple__1078, __pyx_t_13)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_buttonTemplatePressed, __pyx_t_8) < 0) __PYX_ERR(0, 2743, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2744:         "down": (5, 6, 11, 10),
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_down, __pyx_tuple__1079) < 0) __PYX_ERR(0, 2744, __pyx_L1_error)
/* … */
  __pyx_tuple__1079 = PyTuple_Pack(4, __pyx_int_5, __pyx_int_6, __pyx_int_11, __pyx_int_10); if (unlikely(!__pyx_tuple__1079)) __PYX_ERR(0, 2744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1079);
  __Pyx_GIVEREF(__pyx_tuple__1079);
+2745:         "up": (5, 10, 11, 6),
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_up, __pyx_tuple__1080) < 0) __PYX_ERR(0, 2744, __pyx_L1_error)
/* … */
  __pyx_tuple__1080 = PyTuple_Pack(4, __pyx_int_5, __pyx_int_10, __pyx_int_11, __pyx_int_6); if (unlikely(!__pyx_tuple__1080)) __PYX_ERR(0, 2745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1080);
  __Pyx_GIVEREF(__pyx_tuple__1080);
+2746:         "north": (5, 15, 11, 16),
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_north, __pyx_tuple__1081) < 0) __PYX_ERR(0, 2744, __pyx_L1_error)
/* … */
  __pyx_tuple__1081 = PyTuple_Pack(4, __pyx_int_5, __pyx_int_15, __pyx_int_11, __pyx_int_16); if (unlikely(!__pyx_tuple__1081)) __PYX_ERR(0, 2746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1081);
  __Pyx_GIVEREF(__pyx_tuple__1081);
+2747:         "south": (5, 15, 11, 16),
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_south, __pyx_tuple__1082) < 0) __PYX_ERR(0, 2744, __pyx_L1_error)
/* … */
  __pyx_tuple__1082 = PyTuple_Pack(4, __pyx_int_5, __pyx_int_15, __pyx_int_11, __pyx_int_16); if (unlikely(!__pyx_tuple__1082)) __PYX_ERR(0, 2747, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1082);
  __Pyx_GIVEREF(__pyx_tuple__1082);
+2748:         "west": (6, 15, 10, 16),
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_west, __pyx_tuple__1083) < 0) __PYX_ERR(0, 2744, __pyx_L1_error)
/* … */
  __pyx_tuple__1083 = PyTuple_Pack(4, __pyx_int_6, __pyx_int_15, __pyx_int_10, __pyx_int_16); if (unlikely(!__pyx_tuple__1083)) __PYX_ERR(0, 2748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1083);
  __Pyx_GIVEREF(__pyx_tuple__1083);
+2749:         "east": (6, 15, 10, 16)
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_east, __pyx_tuple__1084) < 0) __PYX_ERR(0, 2744, __pyx_L1_error)
/* … */
  __pyx_tuple__1084 = PyTuple_Pack(4, __pyx_int_6, __pyx_int_15, __pyx_int_10, __pyx_int_16); if (unlikely(!__pyx_tuple__1084)) __PYX_ERR(0, 2749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1084);
  __Pyx_GIVEREF(__pyx_tuple__1084);
 2750:     })
 2751: 
+2752:     buttonTemplates = numpy.array([
  __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_41 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_array); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
/* … */
  __pyx_t_25 = PyList_New(16); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_GIVEREF(__pyx_t_40);
  PyList_SET_ITEM(__pyx_t_25, 0, __pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_39);
  PyList_SET_ITEM(__pyx_t_25, 1, __pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_34);
  PyList_SET_ITEM(__pyx_t_25, 2, __pyx_t_34);
  __Pyx_GIVEREF(__pyx_t_38);
  PyList_SET_ITEM(__pyx_t_25, 3, __pyx_t_38);
  __Pyx_GIVEREF(__pyx_t_37);
  PyList_SET_ITEM(__pyx_t_25, 4, __pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_25, 5, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_36);
  PyList_SET_ITEM(__pyx_t_25, 6, __pyx_t_36);
  __Pyx_GIVEREF(__pyx_t_35);
  PyList_SET_ITEM(__pyx_t_25, 7, __pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_33);
  PyList_SET_ITEM(__pyx_t_25, 8, __pyx_t_33);
  __Pyx_GIVEREF(__pyx_t_32);
  PyList_SET_ITEM(__pyx_t_25, 9, __pyx_t_32);
  __Pyx_GIVEREF(__pyx_t_26);
  PyList_SET_ITEM(__pyx_t_25, 10, __pyx_t_26);
  __Pyx_GIVEREF(__pyx_t_30);
  PyList_SET_ITEM(__pyx_t_25, 11, __pyx_t_30);
  __Pyx_GIVEREF(__pyx_t_29);
  PyList_SET_ITEM(__pyx_t_25, 12, __pyx_t_29);
  __Pyx_GIVEREF(__pyx_t_31);
  PyList_SET_ITEM(__pyx_t_25, 13, __pyx_t_31);
  __Pyx_GIVEREF(__pyx_t_28);
  PyList_SET_ITEM(__pyx_t_25, 14, __pyx_t_28);
  __Pyx_GIVEREF(__pyx_t_27);
  PyList_SET_ITEM(__pyx_t_25, 15, __pyx_t_27);
  __pyx_t_40 = 0;
  __pyx_t_39 = 0;
  __pyx_t_34 = 0;
  __pyx_t_38 = 0;
  __pyx_t_37 = 0;
  __pyx_t_13 = 0;
  __pyx_t_36 = 0;
  __pyx_t_35 = 0;
  __pyx_t_33 = 0;
  __pyx_t_32 = 0;
  __pyx_t_26 = 0;
  __pyx_t_30 = 0;
  __pyx_t_29 = 0;
  __pyx_t_31 = 0;
  __pyx_t_28 = 0;
  __pyx_t_27 = 0;
  __pyx_t_27 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_41))) {
    __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_41);
    if (likely(__pyx_t_27)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_41);
      __Pyx_INCREF(__pyx_t_27);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_41, function);
    }
  }
  if (!__pyx_t_27) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_41, __pyx_t_25); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2752, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_28 = PyTuple_New(1+1); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 2752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_28);
    __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_28, 0, __pyx_t_27); __pyx_t_27 = NULL;
    __Pyx_GIVEREF(__pyx_t_25);
    PyTuple_SET_ITEM(__pyx_t_28, 0+1, __pyx_t_25);
    __pyx_t_25 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_41, __pyx_t_28, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
  }
  __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_buttonTemplates, __pyx_t_8) < 0) __PYX_ERR(0, 2752, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2753:         rotateTemplate(buttonTemplate, 180, 0),
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplate);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplate);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2753, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0xB4;
  __pyx_t_17.y = 0;
  __pyx_t_40 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_13), &__pyx_t_17)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2754:         rotateTemplate(buttonTemplate, 90, 90),
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplate);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplate);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2754, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 90;
  __pyx_t_39 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_13), &__pyx_t_17)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2755:         rotateTemplate(buttonTemplate, 90, 270),
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplate);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplate);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2755, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0x10E;
  __pyx_t_34 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_13), &__pyx_t_17)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2756:         rotateTemplate(buttonTemplate, 90, 180),
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplate);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplate);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2756, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0xB4;
  __pyx_t_38 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_13), &__pyx_t_17)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2757:         rotateTemplate(buttonTemplate, 90, 0),
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplate);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplate);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2757, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0;
  __pyx_t_37 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_13), &__pyx_t_17)); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2758:         buttonTemplate,
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplate);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplate);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
+2759:         numpy.zeros((6, 4, 6)), numpy.zeros((6, 4, 6)),
  __pyx_t_36 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_36, __pyx_n_s_zeros); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
/* … */
  __pyx_tuple__1085 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1085)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1085);
  __Pyx_GIVEREF(__pyx_tuple__1085);
  __pyx_t_36 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_tuple__1086, NULL); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_31 = __Pyx_PyObject_GetAttrStr(__pyx_t_35, __pyx_n_s_zeros); if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_tuple__1086 = PyTuple_Pack(1, __pyx_tuple__1085); if (unlikely(!__pyx_tuple__1086)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1086);
  __Pyx_GIVEREF(__pyx_tuple__1086);
  __pyx_tuple__1087 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1087)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1087);
  __Pyx_GIVEREF(__pyx_tuple__1087);
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_31, __pyx_tuple__1088, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
  __pyx_tuple__1088 = PyTuple_Pack(1, __pyx_tuple__1087); if (unlikely(!__pyx_tuple__1088)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1088);
  __Pyx_GIVEREF(__pyx_tuple__1088);
+2760:         rotateTemplate(buttonTemplatePressed, 180, 0),
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplatePressed);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplatePressed);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
  if (!(likely(((__pyx_t_31) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_31, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2760, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0xB4;
  __pyx_t_17.y = 0;
  __pyx_t_33 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_31), &__pyx_t_17)); if (unlikely(!__pyx_t_33)) __PYX_ERR(0, 2760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_33);
  __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
+2761:         rotateTemplate(buttonTemplatePressed, 90, 90),
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplatePressed);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplatePressed);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
  if (!(likely(((__pyx_t_31) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_31, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2761, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 90;
  __pyx_t_32 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_31), &__pyx_t_17)); if (unlikely(!__pyx_t_32)) __PYX_ERR(0, 2761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_32);
  __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
+2762:         rotateTemplate(buttonTemplatePressed, 90, 270),
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplatePressed);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplatePressed);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
  if (!(likely(((__pyx_t_31) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_31, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2762, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0x10E;
  __pyx_t_26 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_31), &__pyx_t_17)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
+2763:         rotateTemplate(buttonTemplatePressed, 90, 180),
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplatePressed);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplatePressed);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
  if (!(likely(((__pyx_t_31) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_31, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2763, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0xB4;
  __pyx_t_30 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_31), &__pyx_t_17)); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 2763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_30);
  __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
+2764:         rotateTemplate(buttonTemplatePressed, 90, 0),
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplatePressed);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplatePressed);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
  if (!(likely(((__pyx_t_31) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_31, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2764, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0;
  __pyx_t_29 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_31), &__pyx_t_17)); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 2764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_29);
  __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
+2765:         buttonTemplatePressed,
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplatePressed);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplatePressed);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
+2766:         numpy.zeros((6, 4, 6)), numpy.zeros((6, 4, 6)),
  __pyx_t_28 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_28);
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_28, __pyx_n_s_zeros); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
/* … */
  __pyx_tuple__1089 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1089)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1089);
  __Pyx_GIVEREF(__pyx_tuple__1089);
  __pyx_t_28 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_tuple__1090, NULL); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_28);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_zeros); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_tuple__1090 = PyTuple_Pack(1, __pyx_tuple__1089); if (unlikely(!__pyx_tuple__1090)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1090);
  __Pyx_GIVEREF(__pyx_tuple__1090);
  __pyx_tuple__1091 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1091)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1091);
  __Pyx_GIVEREF(__pyx_tuple__1091);
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_tuple__1092, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_tuple__1092 = PyTuple_Pack(1, __pyx_tuple__1091); if (unlikely(!__pyx_tuple__1092)) __PYX_ERR(0, 2766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1092);
  __Pyx_GIVEREF(__pyx_tuple__1092);
 2767:     ])
 2768: 
+2769:     makeVertices = makeVerticesFromModel(buttonTemplates, 15)
  __pyx_t_41 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeVerticesFromModel); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
  __pyx_t_28 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_buttonTemplates);
  if (unlikely(!__pyx_t_28)) {
    PyErr_Clear();
    __pyx_t_28 = __Pyx_GetModuleGlobalName(__pyx_n_s_buttonTemplates);
  }
  if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_28);
  __pyx_t_25 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_41))) {
    __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_41);
    if (likely(__pyx_t_25)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_41);
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_41, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_27 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (__pyx_t_25) {
    __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_25); __pyx_t_25 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_28);
  PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_9, __pyx_t_28);
  __Pyx_INCREF(__pyx_int_15);
  __Pyx_GIVEREF(__pyx_int_15);
  PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_9, __pyx_int_15);
  __pyx_t_28 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_41, __pyx_t_27, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_8) < 0) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 2770: 
 2771: 
+2772: class TrapDoorRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_TrapDoorRenderer, __pyx_n_s_TrapDoorRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_TrapDoorRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TrapDoorRenderer, __pyx_t_8) < 0) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2773:     @classmethod
  __pyx_t_41 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_41) < 0) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0;
+2774:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_16TrapDoorRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_16TrapDoorRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_16TrapDoorRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_16TrapDoorRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2774, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2774, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2774, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.TrapDoorRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_16TrapDoorRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_16TrapDoorRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.TrapDoorRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1093 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_a); if (unlikely(!__pyx_tuple__1093)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1093);
  __Pyx_GIVEREF(__pyx_tuple__1093);
/* … */
  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_16TrapDoorRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_TrapDoorRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1094)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_codeobj__1094 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1093, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2774, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1094)) __PYX_ERR(0, 2774, __pyx_L1_error)
+2775:         return [a.ID for a in mats.blocksByType["TRAPDOOR"]]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_TRAPDOOR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2775, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2775, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2775, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2775, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2775, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2775, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_ID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 2775, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2776: 
+2777:     openTemplate = makeVertexTemplatesFromJsonModel((0, 0, 13), (16, 16, 16), {
  __pyx_tuple__1095 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_13); if (unlikely(!__pyx_tuple__1095)) __PYX_ERR(0, 2777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1095);
  __Pyx_GIVEREF(__pyx_tuple__1095);
  __pyx_tuple__1096 = PyTuple_Pack(3, __pyx_int_16, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1096)) __PYX_ERR(0, 2777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1096);
  __Pyx_GIVEREF(__pyx_tuple__1096);
/* … */
  __pyx_t_8 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__1095, __pyx_tuple__1096, __pyx_t_41)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_openTemplate, __pyx_t_8) < 0) __PYX_ERR(0, 2777, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2778:         "down": (0, 13, 16, 16),
  __pyx_t_41 = PyDict_New(); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2778, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_down, __pyx_tuple__1097) < 0) __PYX_ERR(0, 2778, __pyx_L1_error)
/* … */
  __pyx_tuple__1097 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_13, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1097)) __PYX_ERR(0, 2778, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1097);
  __Pyx_GIVEREF(__pyx_tuple__1097);
+2779:         "up": (0, 16, 16, 13),
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_up, __pyx_tuple__1098) < 0) __PYX_ERR(0, 2778, __pyx_L1_error)
/* … */
  __pyx_tuple__1098 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_16, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__1098)) __PYX_ERR(0, 2779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1098);
  __Pyx_GIVEREF(__pyx_tuple__1098);
+2780:         "north": (0, 0, 16, 16),
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_north, __pyx_tuple__1099) < 0) __PYX_ERR(0, 2778, __pyx_L1_error)
/* … */
  __pyx_tuple__1099 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1099)) __PYX_ERR(0, 2780, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1099);
  __Pyx_GIVEREF(__pyx_tuple__1099);
+2781:         "south": (0, 0, 16, 16),
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_south, __pyx_tuple__1100) < 0) __PYX_ERR(0, 2778, __pyx_L1_error)
/* … */
  __pyx_tuple__1100 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1100)) __PYX_ERR(0, 2781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1100);
  __Pyx_GIVEREF(__pyx_tuple__1100);
+2782:         "west": (16, 0, 13, 16),
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_west, __pyx_tuple__1101) < 0) __PYX_ERR(0, 2778, __pyx_L1_error)
/* … */
  __pyx_tuple__1101 = PyTuple_Pack(4, __pyx_int_16, __pyx_int_0, __pyx_int_13, __pyx_int_16); if (unlikely(!__pyx_tuple__1101)) __PYX_ERR(0, 2782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1101);
  __Pyx_GIVEREF(__pyx_tuple__1101);
+2783:         "east": (13, 0, 16, 16)
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_east, __pyx_tuple__1102) < 0) __PYX_ERR(0, 2778, __pyx_L1_error)
/* … */
  __pyx_tuple__1102 = PyTuple_Pack(4, __pyx_int_13, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1102)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1102);
  __Pyx_GIVEREF(__pyx_tuple__1102);
 2784:     })
 2785: 
+2786:     topTemplate = makeVertexTemplatesFromJsonModel((0, 13, 0), (16, 16, 16), {
  __pyx_tuple__1103 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_13, __pyx_int_0); if (unlikely(!__pyx_tuple__1103)) __PYX_ERR(0, 2786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1103);
  __Pyx_GIVEREF(__pyx_tuple__1103);
  __pyx_tuple__1104 = PyTuple_Pack(3, __pyx_int_16, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1104)) __PYX_ERR(0, 2786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1104);
  __Pyx_GIVEREF(__pyx_tuple__1104);
/* … */
  __pyx_t_41 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__1103, __pyx_tuple__1104, __pyx_t_8)); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_topTemplate, __pyx_t_41) < 0) __PYX_ERR(0, 2786, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0;
+2787:         "down": (0, 0, 16, 16),
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_down, __pyx_tuple__1105) < 0) __PYX_ERR(0, 2787, __pyx_L1_error)
/* … */
  __pyx_tuple__1105 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1105)) __PYX_ERR(0, 2787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1105);
  __Pyx_GIVEREF(__pyx_tuple__1105);
+2788:         "up": (0, 0, 16, 16),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_up, __pyx_tuple__1106) < 0) __PYX_ERR(0, 2787, __pyx_L1_error)
/* … */
  __pyx_tuple__1106 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1106)) __PYX_ERR(0, 2788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1106);
  __Pyx_GIVEREF(__pyx_tuple__1106);
+2789:         "north": (0, 16, 16, 13),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_north, __pyx_tuple__1107) < 0) __PYX_ERR(0, 2787, __pyx_L1_error)
/* … */
  __pyx_tuple__1107 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_16, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__1107)) __PYX_ERR(0, 2789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1107);
  __Pyx_GIVEREF(__pyx_tuple__1107);
+2790:         "south": (0, 16, 16, 13),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_south, __pyx_tuple__1108) < 0) __PYX_ERR(0, 2787, __pyx_L1_error)
/* … */
  __pyx_tuple__1108 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_16, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__1108)) __PYX_ERR(0, 2790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1108);
  __Pyx_GIVEREF(__pyx_tuple__1108);
+2791:         "west": (0, 16, 16, 13),
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_west, __pyx_tuple__1109) < 0) __PYX_ERR(0, 2787, __pyx_L1_error)
/* … */
  __pyx_tuple__1109 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_16, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__1109)) __PYX_ERR(0, 2791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1109);
  __Pyx_GIVEREF(__pyx_tuple__1109);
+2792:         "east": (0, 16, 16, 13)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_east, __pyx_tuple__1110) < 0) __PYX_ERR(0, 2787, __pyx_L1_error)
/* … */
  __pyx_tuple__1110 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_16, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__1110)) __PYX_ERR(0, 2792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1110);
  __Pyx_GIVEREF(__pyx_tuple__1110);
 2793:     })
 2794: 
+2795:     bottomTemplate = makeVertexTemplatesFromJsonModel((0, 0, 0), (16, 3, 16), {
  __pyx_tuple__1111 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__1111)) __PYX_ERR(0, 2795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1111);
  __Pyx_GIVEREF(__pyx_tuple__1111);
  __pyx_tuple__1112 = PyTuple_Pack(3, __pyx_int_16, __pyx_int_3, __pyx_int_16); if (unlikely(!__pyx_tuple__1112)) __PYX_ERR(0, 2795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1112);
  __Pyx_GIVEREF(__pyx_tuple__1112);
/* … */
  __pyx_t_8 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__1111, __pyx_tuple__1112, __pyx_t_41)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_bottomTemplate, __pyx_t_8) < 0) __PYX_ERR(0, 2795, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2796:         "down": (0, 0, 16, 16),
  __pyx_t_41 = PyDict_New(); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_down, __pyx_tuple__1113) < 0) __PYX_ERR(0, 2796, __pyx_L1_error)
/* … */
  __pyx_tuple__1113 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1113)) __PYX_ERR(0, 2796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1113);
  __Pyx_GIVEREF(__pyx_tuple__1113);
+2797:         "up": (0, 0, 16, 16),
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_up, __pyx_tuple__1114) < 0) __PYX_ERR(0, 2796, __pyx_L1_error)
/* … */
  __pyx_tuple__1114 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_16, __pyx_int_16); if (unlikely(!__pyx_tuple__1114)) __PYX_ERR(0, 2797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1114);
  __Pyx_GIVEREF(__pyx_tuple__1114);
+2798:         "north": (0, 16, 16, 13),
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_north, __pyx_tuple__1115) < 0) __PYX_ERR(0, 2796, __pyx_L1_error)
/* … */
  __pyx_tuple__1115 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_16, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__1115)) __PYX_ERR(0, 2798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1115);
  __Pyx_GIVEREF(__pyx_tuple__1115);
+2799:         "south": (0, 16, 16, 13),
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_south, __pyx_tuple__1116) < 0) __PYX_ERR(0, 2796, __pyx_L1_error)
/* … */
  __pyx_tuple__1116 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_16, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__1116)) __PYX_ERR(0, 2799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1116);
  __Pyx_GIVEREF(__pyx_tuple__1116);
+2800:         "west": (0, 16, 16, 13),
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_west, __pyx_tuple__1117) < 0) __PYX_ERR(0, 2796, __pyx_L1_error)
/* … */
  __pyx_tuple__1117 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_16, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__1117)) __PYX_ERR(0, 2800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1117);
  __Pyx_GIVEREF(__pyx_tuple__1117);
+2801:         "east": (0, 16, 16, 13)
  if (PyDict_SetItem(__pyx_t_41, __pyx_n_s_east, __pyx_tuple__1118) < 0) __PYX_ERR(0, 2796, __pyx_L1_error)
/* … */
  __pyx_tuple__1118 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_16, __pyx_int_16, __pyx_int_13); if (unlikely(!__pyx_tuple__1118)) __PYX_ERR(0, 2801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1118);
  __Pyx_GIVEREF(__pyx_tuple__1118);
 2802:     })
 2803: 
+2804:     trapDoorTemplates = numpy.array([
  __pyx_t_41 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_41, __pyx_n_s_array); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0;
/* … */
  __pyx_t_38 = PyList_New(16); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_GIVEREF(__pyx_t_41);
  PyList_SET_ITEM(__pyx_t_38, 0, __pyx_t_41);
  __Pyx_GIVEREF(__pyx_t_28);
  PyList_SET_ITEM(__pyx_t_38, 1, __pyx_t_28);
  __Pyx_GIVEREF(__pyx_t_25);
  PyList_SET_ITEM(__pyx_t_38, 2, __pyx_t_25);
  __Pyx_GIVEREF(__pyx_t_31);
  PyList_SET_ITEM(__pyx_t_38, 3, __pyx_t_31);
  __Pyx_GIVEREF(__pyx_t_29);
  PyList_SET_ITEM(__pyx_t_38, 4, __pyx_t_29);
  __Pyx_GIVEREF(__pyx_t_26);
  PyList_SET_ITEM(__pyx_t_38, 5, __pyx_t_26);
  __Pyx_GIVEREF(__pyx_t_32);
  PyList_SET_ITEM(__pyx_t_38, 6, __pyx_t_32);
  __Pyx_GIVEREF(__pyx_t_33);
  PyList_SET_ITEM(__pyx_t_38, 7, __pyx_t_33);
  __Pyx_GIVEREF(__pyx_t_30);
  PyList_SET_ITEM(__pyx_t_38, 8, __pyx_t_30);
  __Pyx_GIVEREF(__pyx_t_35);
  PyList_SET_ITEM(__pyx_t_38, 9, __pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_36);
  PyList_SET_ITEM(__pyx_t_38, 10, __pyx_t_36);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_38, 11, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_37);
  PyList_SET_ITEM(__pyx_t_38, 12, __pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_34);
  PyList_SET_ITEM(__pyx_t_38, 13, __pyx_t_34);
  __Pyx_GIVEREF(__pyx_t_39);
  PyList_SET_ITEM(__pyx_t_38, 14, __pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_40);
  PyList_SET_ITEM(__pyx_t_38, 15, __pyx_t_40);
  __pyx_t_41 = 0;
  __pyx_t_28 = 0;
  __pyx_t_25 = 0;
  __pyx_t_31 = 0;
  __pyx_t_29 = 0;
  __pyx_t_26 = 0;
  __pyx_t_32 = 0;
  __pyx_t_33 = 0;
  __pyx_t_30 = 0;
  __pyx_t_35 = 0;
  __pyx_t_36 = 0;
  __pyx_t_13 = 0;
  __pyx_t_37 = 0;
  __pyx_t_34 = 0;
  __pyx_t_39 = 0;
  __pyx_t_40 = 0;
  __pyx_t_40 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
    __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_27);
    if (likely(__pyx_t_40)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_40);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_27, function);
    }
  }
  if (!__pyx_t_40) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_38); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2804, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_39 = PyTuple_New(1+1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2804, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_39);
    __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_40); __pyx_t_40 = NULL;
    __Pyx_GIVEREF(__pyx_t_38);
    PyTuple_SET_ITEM(__pyx_t_39, 0+1, __pyx_t_38);
    __pyx_t_38 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_39, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2804, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  }
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_trapDoorTemplates, __pyx_t_8) < 0) __PYX_ERR(0, 2804, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2805:         bottomTemplate,
  __pyx_t_41 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_bottomTemplate);
  if (unlikely(!__pyx_t_41)) {
    PyErr_Clear();
    __pyx_t_41 = __Pyx_GetModuleGlobalName(__pyx_n_s_bottomTemplate);
  }
  if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 2805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_41);
+2806:         bottomTemplate,
  __pyx_t_28 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_bottomTemplate);
  if (unlikely(!__pyx_t_28)) {
    PyErr_Clear();
    __pyx_t_28 = __Pyx_GetModuleGlobalName(__pyx_n_s_bottomTemplate);
  }
  if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 2806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_28);
+2807:         bottomTemplate,
  __pyx_t_25 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_bottomTemplate);
  if (unlikely(!__pyx_t_25)) {
    PyErr_Clear();
    __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_bottomTemplate);
  }
  if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
+2808:         bottomTemplate,
  __pyx_t_31 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_bottomTemplate);
  if (unlikely(!__pyx_t_31)) {
    PyErr_Clear();
    __pyx_t_31 = __Pyx_GetModuleGlobalName(__pyx_n_s_bottomTemplate);
  }
  if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 2808, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_31);
+2809:         openTemplate,
  __pyx_t_29 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_openTemplate);
  if (unlikely(!__pyx_t_29)) {
    PyErr_Clear();
    __pyx_t_29 = __Pyx_GetModuleGlobalName(__pyx_n_s_openTemplate);
  }
  if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 2809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_29);
+2810:         rotateTemplate(openTemplate, x=0, y=180),
  __pyx_t_30 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_openTemplate);
  if (unlikely(!__pyx_t_30)) {
    PyErr_Clear();
    __pyx_t_30 = __Pyx_GetModuleGlobalName(__pyx_n_s_openTemplate);
  }
  if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 2810, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_30);
  if (!(likely(((__pyx_t_30) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_30, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2810, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_26 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_30), &__pyx_t_17)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2810, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
+2811:         rotateTemplate(openTemplate, x=0, y=270),
  __pyx_t_30 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_openTemplate);
  if (unlikely(!__pyx_t_30)) {
    PyErr_Clear();
    __pyx_t_30 = __Pyx_GetModuleGlobalName(__pyx_n_s_openTemplate);
  }
  if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 2811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_30);
  if (!(likely(((__pyx_t_30) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_30, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2811, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_32 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_30), &__pyx_t_17)); if (unlikely(!__pyx_t_32)) __PYX_ERR(0, 2811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_32);
  __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
+2812:         rotateTemplate(openTemplate, x=0, y=90),
  __pyx_t_30 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_openTemplate);
  if (unlikely(!__pyx_t_30)) {
    PyErr_Clear();
    __pyx_t_30 = __Pyx_GetModuleGlobalName(__pyx_n_s_openTemplate);
  }
  if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 2812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_30);
  if (!(likely(((__pyx_t_30) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_30, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2812, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_33 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_30), &__pyx_t_17)); if (unlikely(!__pyx_t_33)) __PYX_ERR(0, 2812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_33);
  __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
+2813:         topTemplate,
  __pyx_t_30 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_topTemplate);
  if (unlikely(!__pyx_t_30)) {
    PyErr_Clear();
    __pyx_t_30 = __Pyx_GetModuleGlobalName(__pyx_n_s_topTemplate);
  }
  if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 2813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_30);
+2814:         topTemplate,
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_topTemplate);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_topTemplate);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 2814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
+2815:         topTemplate,
  __pyx_t_36 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_topTemplate);
  if (unlikely(!__pyx_t_36)) {
    PyErr_Clear();
    __pyx_t_36 = __Pyx_GetModuleGlobalName(__pyx_n_s_topTemplate);
  }
  if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 2815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
+2816:         topTemplate,
  __pyx_t_13 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_topTemplate);
  if (unlikely(!__pyx_t_13)) {
    PyErr_Clear();
    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_topTemplate);
  }
  if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
+2817:         openTemplate,
  __pyx_t_37 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_openTemplate);
  if (unlikely(!__pyx_t_37)) {
    PyErr_Clear();
    __pyx_t_37 = __Pyx_GetModuleGlobalName(__pyx_n_s_openTemplate);
  }
  if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
+2818:         rotateTemplate(openTemplate, x=0, y=180),
  __pyx_t_38 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_openTemplate);
  if (unlikely(!__pyx_t_38)) {
    PyErr_Clear();
    __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_openTemplate);
  }
  if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  if (!(likely(((__pyx_t_38) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_38, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2818, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0xB4;
  __pyx_t_34 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_38), &__pyx_t_17)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
+2819:         rotateTemplate(openTemplate, x=0, y=270),
  __pyx_t_38 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_openTemplate);
  if (unlikely(!__pyx_t_38)) {
    PyErr_Clear();
    __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_openTemplate);
  }
  if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  if (!(likely(((__pyx_t_38) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_38, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2819, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 0x10E;
  __pyx_t_39 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_38), &__pyx_t_17)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
+2820:         rotateTemplate(openTemplate, x=0, y=90),
  __pyx_t_38 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_openTemplate);
  if (unlikely(!__pyx_t_38)) {
    PyErr_Clear();
    __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_openTemplate);
  }
  if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2820, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  if (!(likely(((__pyx_t_38) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_38, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2820, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 0;
  __pyx_t_17.y = 90;
  __pyx_t_40 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_38), &__pyx_t_17)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2820, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
 2821:     ])
 2822: 
+2823:     makeVertices = makeVerticesFromModel(trapDoorTemplates, 15)
  __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeVerticesFromModel); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_39 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_trapDoorTemplates);
  if (unlikely(!__pyx_t_39)) {
    PyErr_Clear();
    __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_trapDoorTemplates);
  }
  if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_38 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
    __pyx_t_38 = PyMethod_GET_SELF(__pyx_t_27);
    if (likely(__pyx_t_38)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_38);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_27, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_40 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (__pyx_t_38) {
    __Pyx_GIVEREF(__pyx_t_38); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_38); __pyx_t_38 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_39);
  PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_9, __pyx_t_39);
  __Pyx_INCREF(__pyx_int_15);
  __Pyx_GIVEREF(__pyx_int_15);
  PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_9, __pyx_int_15);
  __pyx_t_39 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_40, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_8) < 0) __PYX_ERR(0, 2823, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 2824: 
 2825: 
+2826: class FenceBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_FenceBlockRenderer, __pyx_n_s_FenceBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_40 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_FenceBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FenceBlockRenderer, __pyx_t_40) < 0) __PYX_ERR(0, 2826, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2827:     blocktypes_alpha = [block.ID for block in alphaMaterials.blocksByType["FENCE"]]
  __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_t_27 = PyObject_GetItem(__pyx_t_40, __pyx_n_s_FENCE); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (likely(PyList_CheckExact(__pyx_t_27)) || PyTuple_CheckExact(__pyx_t_27)) {
    __pyx_t_40 = __pyx_t_27; __Pyx_INCREF(__pyx_t_40); __pyx_t_9 = 0;
    __pyx_t_42 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_40 = PyObject_GetIter(__pyx_t_27); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    __pyx_t_42 = Py_TYPE(__pyx_t_40)->tp_iternext; if (unlikely(!__pyx_t_42)) __PYX_ERR(0, 2827, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  for (;;) {
    if (likely(!__pyx_t_42)) {
      if (likely(PyList_CheckExact(__pyx_t_40))) {
        if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_40)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_27 = PyList_GET_ITEM(__pyx_t_40, __pyx_t_9); __Pyx_INCREF(__pyx_t_27); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2827, __pyx_L1_error)
        #else
        __pyx_t_27 = PySequence_ITEM(__pyx_t_40, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2827, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        #endif
      } else {
        if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_40)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_27 = PyTuple_GET_ITEM(__pyx_t_40, __pyx_t_9); __Pyx_INCREF(__pyx_t_27); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2827, __pyx_L1_error)
        #else
        __pyx_t_27 = PySequence_ITEM(__pyx_t_40, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2827, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        #endif
      }
    } else {
      __pyx_t_27 = __pyx_t_42(__pyx_t_40);
      if (unlikely(!__pyx_t_27)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2827, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_27);
    }
    if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_block, __pyx_t_27) < 0) __PYX_ERR(0, 2827, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    __pyx_t_27 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_block);
    if (unlikely(!__pyx_t_27)) {
      PyErr_Clear();
      __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_block);
    }
    if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_ID); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_39);
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_8, (PyObject*)__pyx_t_39))) __PYX_ERR(0, 2827, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  }
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_blocktypes_alpha, __pyx_t_8) < 0) __PYX_ERR(0, 2827, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2828:     blocktypes_pocket = [block.ID for block in pocketMaterials.blocksByType["FENCE"]]
  __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_pocketMaterials); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_blocksByType); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_t_40 = PyObject_GetItem(__pyx_t_39, __pyx_n_s_FENCE); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  if (likely(PyList_CheckExact(__pyx_t_40)) || PyTuple_CheckExact(__pyx_t_40)) {
    __pyx_t_39 = __pyx_t_40; __Pyx_INCREF(__pyx_t_39); __pyx_t_9 = 0;
    __pyx_t_42 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_39 = PyObject_GetIter(__pyx_t_40); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_39);
    __pyx_t_42 = Py_TYPE(__pyx_t_39)->tp_iternext; if (unlikely(!__pyx_t_42)) __PYX_ERR(0, 2828, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  for (;;) {
    if (likely(!__pyx_t_42)) {
      if (likely(PyList_CheckExact(__pyx_t_39))) {
        if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_39)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_40 = PyList_GET_ITEM(__pyx_t_39, __pyx_t_9); __Pyx_INCREF(__pyx_t_40); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2828, __pyx_L1_error)
        #else
        __pyx_t_40 = PySequence_ITEM(__pyx_t_39, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_40);
        #endif
      } else {
        if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_39)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_40 = PyTuple_GET_ITEM(__pyx_t_39, __pyx_t_9); __Pyx_INCREF(__pyx_t_40); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2828, __pyx_L1_error)
        #else
        __pyx_t_40 = PySequence_ITEM(__pyx_t_39, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_40);
        #endif
      }
    } else {
      __pyx_t_40 = __pyx_t_42(__pyx_t_39);
      if (unlikely(!__pyx_t_40)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2828, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_40);
    }
    if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_block, __pyx_t_40) < 0) __PYX_ERR(0, 2828, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
    __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_block);
    if (unlikely(!__pyx_t_40)) {
      PyErr_Clear();
      __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_block);
    }
    if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_ID); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_8, (PyObject*)__pyx_t_27))) __PYX_ERR(0, 2828, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  }
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_blocktypes_pocket, __pyx_t_8) < 0) __PYX_ERR(0, 2828, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 2829: 
+2830:     fenceTemplates = makeVertexTemplates(3 / 8., 0, 3 / 8., 5 / 8., 1, 5 / 8.)
  __pyx_t_8 = PyFloat_FromDouble((3.0 / 8.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_39 = PyFloat_FromDouble((3.0 / 8.)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_27 = PyFloat_FromDouble((5.0 / 8.)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_40 = PyFloat_FromDouble((5.0 / 8.)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_t_8;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_t_39;
  __pyx_t_43.xmax = __pyx_t_27;
  __pyx_t_43.ymax = __pyx_int_1;
  __pyx_t_43.zmax = __pyx_t_40;
  __pyx_t_38 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_fenceTemplates, __pyx_t_38) < 0) __PYX_ERR(0, 2830, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
 2831: 
+2832:     makeVertices = makeVerticesFromModel(fenceTemplates)
  __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeVerticesFromModel); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_27 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_fenceTemplates);
  if (unlikely(!__pyx_t_27)) {
    PyErr_Clear();
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_fenceTemplates);
  }
  if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_39 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_40))) {
    __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_40);
    if (likely(__pyx_t_39)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
      __Pyx_INCREF(__pyx_t_39);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_40, function);
    }
  }
  if (!__pyx_t_39) {
    __pyx_t_38 = __Pyx_PyObject_CallOneArg(__pyx_t_40, __pyx_t_27); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2832, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    __Pyx_GOTREF(__pyx_t_38);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2832, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_39); __pyx_t_39 = NULL;
    __Pyx_GIVEREF(__pyx_t_27);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_27);
    __pyx_t_27 = 0;
    __pyx_t_38 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_8, NULL); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2832, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_38);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_38) < 0) __PYX_ERR(0, 2832, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
 2833: 
+2834:     @classmethod
  __pyx_t_40 = __Pyx_Method_ClassMethod(__pyx_t_38); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2834, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_40) < 0) __PYX_ERR(0, 2835, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+2835:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18FenceBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18FenceBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_18FenceBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18FenceBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2835, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2835, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2835, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.FenceBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18FenceBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18FenceBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.FenceBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1119 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1119)) __PYX_ERR(0, 2835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1119);
  __Pyx_GIVEREF(__pyx_tuple__1119);
/* … */
  __pyx_t_38 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18FenceBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_FenceBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1120)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_codeobj__1120 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1119, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2835, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1120)) __PYX_ERR(0, 2835, __pyx_L1_error)
+2836:         if mats.name == "Pocket":
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2836, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Pocket, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2836, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
    goto __pyx_L3;
  }
+2837:             cls.blocktypes = cls.blocktypes_pocket
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_blocktypes_pocket); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_blocktypes, __pyx_t_1) < 0) __PYX_ERR(0, 2837, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2838:         else:
+2839:             cls.blocktypes = cls.blocktypes_alpha
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_blocktypes_alpha); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_blocktypes, __pyx_t_1) < 0) __PYX_ERR(0, 2839, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L3:;
+2840:         return cls.blocktypes
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_blocktypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2840, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2841: 
 2842: 
+2843: class FenceGateBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_FenceGateBlockRenderer, __pyx_n_s_FenceGateBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_39 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_FenceGateBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FenceGateBlockRenderer, __pyx_t_39) < 0) __PYX_ERR(0, 2843, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2844:     closedFenceTemplates = numpy.array([
  __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_38, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
/* … */
  __pyx_t_38 = PyList_New(2); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_GIVEREF(__pyx_t_39);
  PyList_SET_ITEM(__pyx_t_38, 0, __pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_34);
  PyList_SET_ITEM(__pyx_t_38, 1, __pyx_t_34);
  __pyx_t_39 = 0;
  __pyx_t_34 = 0;
  __pyx_t_34 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_34)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_34);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_34) {
    __pyx_t_40 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_38); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2844, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
    __Pyx_GOTREF(__pyx_t_40);
  } else {
    __pyx_t_39 = PyTuple_New(1+1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2844, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_39);
    __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_34); __pyx_t_34 = NULL;
    __Pyx_GIVEREF(__pyx_t_38);
    PyTuple_SET_ITEM(__pyx_t_39, 0+1, __pyx_t_38);
    __pyx_t_38 = 0;
    __pyx_t_40 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_39, NULL); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2844, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_closedFenceTemplates, __pyx_t_40) < 0) __PYX_ERR(0, 2844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+2845:         makeVertexTemplates(0, 0, 3 / 8., 1, .8, 5 / 8.),
  __pyx_t_38 = PyFloat_FromDouble((3.0 / 8.)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_t_27 = PyFloat_FromDouble((5.0 / 8.)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_int_0;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_t_38;
  __pyx_t_43.xmax = __pyx_int_1;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_t_27;
  __pyx_t_39 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+2846:         makeVertexTemplates(3 / 8., 0, 0, 5 / 8., .8, 1)])
  __pyx_t_27 = PyFloat_FromDouble((3.0 / 8.)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_38 = PyFloat_FromDouble((5.0 / 8.)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_t_27;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_int_0;
  __pyx_t_43.xmax = __pyx_t_38;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_int_1;
  __pyx_t_34 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
 2847: 
+2848:     openFenceTemplates = numpy.array([
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_array); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_t_36 = PyList_New(4); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 2848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_36, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_27);
  PyList_SET_ITEM(__pyx_t_36, 1, __pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_37);
  PyList_SET_ITEM(__pyx_t_36, 2, __pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_36, 3, __pyx_t_13);
  __pyx_t_8 = 0;
  __pyx_t_27 = 0;
  __pyx_t_37 = 0;
  __pyx_t_13 = 0;
  __pyx_t_13 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_39))) {
    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_39);
    if (likely(__pyx_t_13)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_39);
      __Pyx_INCREF(__pyx_t_13);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_39, function);
    }
  }
  if (!__pyx_t_13) {
    __pyx_t_40 = __Pyx_PyObject_CallOneArg(__pyx_t_39, __pyx_t_36); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2848, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
    __Pyx_GOTREF(__pyx_t_40);
  } else {
    __pyx_t_37 = PyTuple_New(1+1); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2848, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_37);
    __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_37, 0, __pyx_t_13); __pyx_t_13 = NULL;
    __Pyx_GIVEREF(__pyx_t_36);
    PyTuple_SET_ITEM(__pyx_t_37, 0+1, __pyx_t_36);
    __pyx_t_36 = 0;
    __pyx_t_40 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_t_37, NULL); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2848, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  }
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_openFenceTemplates, __pyx_t_40) < 0) __PYX_ERR(0, 2848, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+2849:         [makeVertexTemplates(0, 0, 3 / 8., 1 / 8., .8, 1),
  __pyx_t_8 = PyFloat_FromDouble((3.0 / 8.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_38 = PyFloat_FromDouble((1.0 / 8.)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_int_0;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_t_8;
  __pyx_t_43.xmax = __pyx_t_38;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_int_1;
  __pyx_t_34 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
/* … */
  __pyx_t_8 = PyList_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_34);
  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_34);
  __Pyx_GIVEREF(__pyx_t_27);
  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_27);
  __pyx_t_34 = 0;
  __pyx_t_27 = 0;
+2850:          makeVertexTemplates(7 / 8., 0, 3 / 8., 1, .8, 1)],
  __pyx_t_38 = PyFloat_FromDouble((7.0 / 8.)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_t_8 = PyFloat_FromDouble((3.0 / 8.)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_t_38;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_t_8;
  __pyx_t_43.xmax = __pyx_int_1;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_int_1;
  __pyx_t_27 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2851:         [makeVertexTemplates(0, 0, 0, 5 / 8., .8, 1 / 8.),
  __pyx_t_27 = PyFloat_FromDouble((5.0 / 8.)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_34 = PyFloat_FromDouble((1.0 / 8.)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_int_0;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_int_0;
  __pyx_t_43.xmax = __pyx_t_27;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_t_34;
  __pyx_t_38 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
/* … */
  __pyx_t_27 = PyList_New(2); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_38);
  PyList_SET_ITEM(__pyx_t_27, 0, __pyx_t_38);
  __Pyx_GIVEREF(__pyx_t_37);
  PyList_SET_ITEM(__pyx_t_27, 1, __pyx_t_37);
  __pyx_t_38 = 0;
  __pyx_t_37 = 0;
+2852:          makeVertexTemplates(0, 0, 7 / 8., 5 / 8., .8, 1)],
  __pyx_t_34 = PyFloat_FromDouble((7.0 / 8.)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __pyx_t_27 = PyFloat_FromDouble((5.0 / 8.)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_int_0;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_t_34;
  __pyx_t_43.xmax = __pyx_t_27;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_int_1;
  __pyx_t_37 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+2853:         [makeVertexTemplates(0, 0, 0, 1 / 8., .8, 5 / 8.),
  __pyx_t_37 = PyFloat_FromDouble((1.0 / 8.)); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __pyx_t_38 = PyFloat_FromDouble((5.0 / 8.)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_int_0;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_int_0;
  __pyx_t_43.xmax = __pyx_t_37;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_t_38;
  __pyx_t_34 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
/* … */
  __pyx_t_37 = PyList_New(2); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_34);
  PyList_SET_ITEM(__pyx_t_37, 0, __pyx_t_34);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_37, 1, __pyx_t_13);
  __pyx_t_34 = 0;
  __pyx_t_13 = 0;
+2854:          makeVertexTemplates(7 / 8., 0, 0, 1, .8, 5 / 8.)],
  __pyx_t_38 = PyFloat_FromDouble((7.0 / 8.)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_t_37 = PyFloat_FromDouble((5.0 / 8.)); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_t_38;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_int_0;
  __pyx_t_43.xmax = __pyx_int_1;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_t_37;
  __pyx_t_13 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
+2855:         [makeVertexTemplates(3 / 8., 0, 0, 1, .8, 1 / 8.),
  __pyx_t_13 = PyFloat_FromDouble((3.0 / 8.)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_34 = PyFloat_FromDouble((1.0 / 8.)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_t_13;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_int_0;
  __pyx_t_43.xmax = __pyx_int_1;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_t_34;
  __pyx_t_38 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
/* … */
  __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_38);
  PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_38);
  __Pyx_GIVEREF(__pyx_t_36);
  PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_36);
  __pyx_t_38 = 0;
  __pyx_t_36 = 0;
+2856:          makeVertexTemplates(3 / 8., 0, 7 / 8., 1, .8, 1)]])
  __pyx_t_34 = PyFloat_FromDouble((3.0 / 8.)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __pyx_t_13 = PyFloat_FromDouble((7.0 / 8.)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_43.__pyx_n = 6;
  __pyx_t_43.xmin = __pyx_t_34;
  __pyx_t_43.ymin = __pyx_int_0;
  __pyx_t_43.zmin = __pyx_t_13;
  __pyx_t_43.xmax = __pyx_int_1;
  __pyx_t_43.ymax = __pyx_float__8;
  __pyx_t_43.zmax = __pyx_int_1;
  __pyx_t_36 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplates(0, &__pyx_t_43)); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 2856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 2857: 
+2858:     @classmethod
  __pyx_t_39 = __Pyx_Method_ClassMethod(__pyx_t_40); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2858, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_39) < 0) __PYX_ERR(0, 2859, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
+2859:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_22FenceGateBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_22FenceGateBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_22FenceGateBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_22FenceGateBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2859, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2859, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2859, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.FenceGateBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_22FenceGateBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_22FenceGateBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.FenceGateBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_22FenceGateBlockRenderer_4generator31(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1121 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_a); if (unlikely(!__pyx_tuple__1121)) __PYX_ERR(0, 2859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1121);
  __Pyx_GIVEREF(__pyx_tuple__1121);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_22FenceGateBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_FenceGateBlockRenderer_getBlockt, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1122)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_codeobj__1122 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1121, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2859, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1122)) __PYX_ERR(0, 2859, __pyx_L1_error)
+2860:         return [a.ID for a in mats.AllStairs]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_AllStairs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2860, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2860, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2860, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2860, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2860, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2860, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2860, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2860, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 2860, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2861: 
+2862:     def fenceGateVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_22FenceGateBlockRenderer_3fenceGateVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_22FenceGateBlockRenderer_3fenceGateVertices = {"fenceGateVertices", (PyCFunction)__pyx_pw_9_renderer_22FenceGateBlockRenderer_3fenceGateVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_22FenceGateBlockRenderer_3fenceGateVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fenceGateVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("fenceGateVertices", 1, 7, 7, 1); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("fenceGateVertices", 1, 7, 7, 2); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("fenceGateVertices", 1, 7, 7, 3); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("fenceGateVertices", 1, 7, 7, 4); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("fenceGateVertices", 1, 7, 7, 5); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("fenceGateVertices", 1, 7, 7, 6); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fenceGateVertices") < 0)) __PYX_ERR(0, 2862, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fenceGateVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2862, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.FenceGateBlockRenderer.fenceGateVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_22FenceGateBlockRenderer_2fenceGateVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_22FenceGateBlockRenderer_2fenceGateVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_38_fenceGateVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fenceGateVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_38_fenceGateVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_38_fenceGateVertices(__pyx_ptype_9_renderer___pyx_scope_struct_38_fenceGateVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_22FenceGateBlockRenderer_4generator31, (PyObject *) __pyx_cur_scope, __pyx_n_s_fenceGateVertices, __pyx_n_s_FenceGateBlockRenderer_fenceGate, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2862, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.FenceGateBlockRenderer.fenceGateVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_22FenceGateBlockRenderer_4generator31(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2862, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("fenceGateVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1123 = PyTuple_Pack(19, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_fenceMask, __pyx_n_s_closedGateMask, __pyx_n_s_openGateMask, __pyx_n_s_closedGateIndices, __pyx_n_s_openGateIndices, __pyx_n_s_closedGateData, __pyx_n_s_openGateData, __pyx_n_s_vertexArray, __pyx_n_s_indicies, __pyx_n_s_dimension, __pyx_n_s_append, __pyx_n_s_i); if (unlikely(!__pyx_tuple__1123)) __PYX_ERR(0, 2862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1123);
  __Pyx_GIVEREF(__pyx_tuple__1123);
/* … */
  __pyx_t_39 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_22FenceGateBlockRenderer_3fenceGateVertices, 0, __pyx_n_s_FenceGateBlockRenderer_fenceGate, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1124)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_fenceGateVertices, __pyx_t_39) < 0) __PYX_ERR(0, 2862, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __pyx_codeobj__1124 = (PyObject*)__Pyx_PyCode_New(7, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1123, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_fenceGateVertices, 2862, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1124)) __PYX_ERR(0, 2862, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_38_fenceGateVertices {
  PyObject_HEAD
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_closedGateData;
  PyObject *__pyx_v_closedGateIndices;
  PyObject *__pyx_v_closedGateMask;
  PyObject *__pyx_v_dimension;
  PyObject *__pyx_v_facingBlockIndices;
  PyObject *__pyx_v_fenceMask;
  long __pyx_v_i;
  long __pyx_v_indicies;
  PyObject *__pyx_v_openGateData;
  PyObject *__pyx_v_openGateIndices;
  PyObject *__pyx_v_openGateMask;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  long __pyx_t_0;
};

+2863:         fenceMask = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2863, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2863, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2863, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_fenceMask = __pyx_t_1;
  __pyx_t_1 = 0;
+2864:         closedGateMask = fenceMask.copy()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_fenceMask, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2864, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2864, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_closedGateMask = __pyx_t_1;
  __pyx_t_1 = 0;
+2865:         closedGateMask[blockData & 4 == 4] = 0
  __pyx_t_1 = __Pyx_PyInt_AndObjC(__pyx_cur_scope->__pyx_v_blockData, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_closedGateMask, __pyx_t_2, __pyx_int_0) < 0)) __PYX_ERR(0, 2865, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2866:         openGateMask = fenceMask.copy()
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_fenceMask, __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2866, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2866, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_openGateMask = __pyx_t_2;
  __pyx_t_2 = 0;
+2867:         openGateMask[blockData & 4 == 0] = 0
  __pyx_t_2 = __Pyx_PyInt_AndObjC(__pyx_cur_scope->__pyx_v_blockData, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2867, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_2, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2867, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_openGateMask, __pyx_t_1, __pyx_int_0) < 0)) __PYX_ERR(0, 2867, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2868:         closedGateIndices = closedGateMask.nonzero()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_closedGateMask, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2868, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2868, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2868, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_closedGateIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2869:         openGateIndices = openGateMask.nonzero()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_openGateMask, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2869, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2869, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_openGateIndices = __pyx_t_1;
  __pyx_t_1 = 0;
 2870: 
+2871:         closedGateData = blockData[closedGateMask]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_closedGateMask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_closedGateData = __pyx_t_1;
  __pyx_t_1 = 0;
+2872:         closedGateData &= 1
  __pyx_t_1 = __Pyx_PyInt_AndObjC(__pyx_cur_scope->__pyx_v_closedGateData, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_closedGateData);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_closedGateData, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
 2873: 
+2874:         openGateData = blockData[openGateMask]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_openGateMask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_openGateData = __pyx_t_1;
  __pyx_t_1 = 0;
+2875:         openGateData &= 3
  __pyx_t_1 = __Pyx_PyInt_AndObjC(__pyx_cur_scope->__pyx_v_openGateData, __pyx_int_3, 3, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_openGateData);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_openGateData, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
 2876: 
+2877:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2877, __pyx_L1_error)
 2878: 
 2879:         # closed gate
+2880:         vertexArray = numpy.zeros((len(closedGateIndices[0]), 6, 4, 6), dtype='float32')
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_closedGateIndices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 2880, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_6);
  __Pyx_GIVEREF(__pyx_int_6);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_6);
  __Pyx_INCREF(__pyx_int_4);
  __Pyx_GIVEREF(__pyx_int_4);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_4);
  __Pyx_INCREF(__pyx_int_6);
  __Pyx_GIVEREF(__pyx_int_6);
  PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_int_6);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 2880, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_vertexArray = __pyx_t_3;
  __pyx_t_3 = 0;
+2881:         for indicies in xrange(3):
  for (__pyx_t_6 = 0; __pyx_t_6 < 3; __pyx_t_6+=1) {
    __pyx_cur_scope->__pyx_v_indicies = __pyx_t_6;
+2882:             dimension = (0, 2, 1)[indicies]
    __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_tuple__474, __pyx_cur_scope->__pyx_v_indicies, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dimension);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dimension, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
/* … */
  __pyx_tuple__474 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_2, __pyx_int_1); if (unlikely(!__pyx_tuple__474)) __PYX_ERR(0, 2882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__474);
  __Pyx_GIVEREF(__pyx_tuple__474);
 2883: 
+2884:             vertexArray[..., indicies] = closedGateIndices[dimension][:, numpy.newaxis,
    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_closedGateIndices, __pyx_cur_scope->__pyx_v_dimension); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_slice__475);
    __Pyx_GIVEREF(__pyx_slice__475);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_slice__475);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_indicies); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
    __pyx_t_4 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 2884, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
/* … */
  __pyx_slice__475 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__475)) __PYX_ERR(0, 2884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__475);
  __Pyx_GIVEREF(__pyx_slice__475);
+2885:                                          numpy.newaxis]  # xxx swap z with y using ^
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2885, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2885, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 2886: 
+2887:         vertexArray[..., 0:5] += self.closedFenceTemplates[closedGateData][..., 0:5]
  __pyx_slice__476 = PySlice_New(__pyx_int_0, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__476)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__476);
  __Pyx_GIVEREF(__pyx_slice__476);
/* … */
  __Pyx_INCREF(__pyx_tuple__477);
  __pyx_t_7 = __pyx_tuple__477;
  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_closedFenceTemplates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_closedGateData); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__477 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__476); if (unlikely(!__pyx_tuple__477)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__477);
  __Pyx_GIVEREF(__pyx_tuple__477);
  __pyx_slice__478 = PySlice_New(__pyx_int_0, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__478)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__478);
  __Pyx_GIVEREF(__pyx_slice__478);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_tuple__479); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7, __pyx_t_4) < 0)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__479 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__478); if (unlikely(!__pyx_tuple__479)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__479);
  __Pyx_GIVEREF(__pyx_tuple__479);
 2888: 
+2889:         vertexArray[_ST] += texMap(blocks[closedGateIndices], 0)[..., numpy.newaxis, :]
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_closedGateIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __pyx_t_8 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_9 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_10 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__pyx_t_9) {
    __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_int_0);
  __pyx_t_1 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_8, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10);
  __Pyx_INCREF(__pyx_slice__480);
  __Pyx_GIVEREF(__pyx_slice__480);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_slice__480);
  __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetItem(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_4, __pyx_t_8) < 0)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__480 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__480)) __PYX_ERR(0, 2889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__480);
  __Pyx_GIVEREF(__pyx_slice__480);
 2890: 
+2891:         vertexArray.view('uint8')[_RGB] = self.closedFenceTemplates[closedGateData][..., 5][..., numpy.newaxis]
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_closedFenceTemplates); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = PyObject_GetItem(__pyx_t_4, __pyx_cur_scope->__pyx_v_closedGateData); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_t_8, __pyx_tuple__481); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_8, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10);
  __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetItem(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
/* … */
  __pyx_tuple__481 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_5); if (unlikely(!__pyx_tuple__481)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__481);
  __Pyx_GIVEREF(__pyx_tuple__481);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__482, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_8, __pyx_t_10) < 0)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_tuple__482 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__482)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__482);
  __Pyx_GIVEREF(__pyx_tuple__482);
+2892:         vertexArray.view('uint8')[_A] = 0xFF
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__483, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_A); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_10, __pyx_int_255) < 0)) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
  __pyx_tuple__483 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__483)) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__483);
  __Pyx_GIVEREF(__pyx_tuple__483);
+2893:         vertexArray.view('uint8')[_RGB] *= areaBlockLights[1:-1, 1:-1, 1:-1][closedGateIndices][
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__484, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = PyObject_GetItem(__pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
/* … */
  __pyx_tuple__484 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__484)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__484);
  __Pyx_GIVEREF(__pyx_tuple__484);
  __pyx_slice__485 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__485)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__485);
  __Pyx_GIVEREF(__pyx_slice__485);
  __pyx_slice__486 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__486)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__486);
  __Pyx_GIVEREF(__pyx_slice__486);
  __pyx_slice__487 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__487)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__487);
  __Pyx_GIVEREF(__pyx_slice__487);
  __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_tuple__488); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_closedGateIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_11);
  __pyx_t_1 = 0;
  __pyx_t_9 = 0;
  __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetItem(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_10, __pyx_t_3) < 0)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__488 = PyTuple_Pack(3, __pyx_slice__485, __pyx_slice__486, __pyx_slice__487); if (unlikely(!__pyx_tuple__488)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__488);
  __Pyx_GIVEREF(__pyx_tuple__488);
+2894:             ..., numpy.newaxis, numpy.newaxis, numpy.newaxis]
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2895:         vertexArray.shape = (vertexArray.shape[0] * 6, 4, 6)
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyNumber_Multiply(__pyx_t_10, __pyx_int_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_4);
  __Pyx_GIVEREF(__pyx_int_4);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_int_4);
  __Pyx_INCREF(__pyx_int_6);
  __Pyx_GIVEREF(__pyx_int_6);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_int_6);
  __pyx_t_8 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_shape, __pyx_t_10) < 0) __PYX_ERR(0, 2895, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+2896:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 2;
  return __pyx_r;
  __pyx_L7_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2896, __pyx_L1_error)
+2897:         self.vertexArrays = [vertexArray]
  __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_vertexArray);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_vertexArray);
  PyList_SET_ITEM(__pyx_t_10, 0, __pyx_cur_scope->__pyx_v_vertexArray);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_t_10) < 0) __PYX_ERR(0, 2897, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 2898: 
+2899:         append = self.vertexArrays.append
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_append); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_8;
  __pyx_t_8 = 0;
 2900:         # open gate
+2901:         for i in xrange(2):
  for (__pyx_t_6 = 0; __pyx_t_6 < 2; __pyx_t_6+=1) {
    __pyx_cur_scope->__pyx_v_i = __pyx_t_6;
+2902:             vertexArray = numpy.zeros((len(openGateIndices[0]), 6, 4, 6), dtype='float32')
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_openGateIndices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 2902, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_6);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_int_4);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_int_6);
    __pyx_t_8 = 0;
    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 2902, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_11);
    __Pyx_GIVEREF(__pyx_t_11);
    __pyx_t_11 = 0;
+2903:             for indicies in xrange(3):
    for (__pyx_t_12 = 0; __pyx_t_12 < 3; __pyx_t_12+=1) {
      __pyx_cur_scope->__pyx_v_indicies = __pyx_t_12;
+2904:                 dimension = (0, 2, 1)[indicies]
      __pyx_t_11 = __Pyx_GetItemInt_Tuple(__pyx_tuple__489, __pyx_cur_scope->__pyx_v_indicies, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2904, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dimension);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dimension, __pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_11);
      __pyx_t_11 = 0;
/* … */
  __pyx_tuple__489 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_2, __pyx_int_1); if (unlikely(!__pyx_tuple__489)) __PYX_ERR(0, 2904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__489);
  __Pyx_GIVEREF(__pyx_tuple__489);
 2905: 
+2906:                 vertexArray[..., indicies] = openGateIndices[dimension][:, numpy.newaxis,
      __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_openGateIndices, __pyx_cur_scope->__pyx_v_dimension); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2906, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2906, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2906, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2906, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_slice__490);
      __Pyx_GIVEREF(__pyx_slice__490);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_slice__490);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_10);
      __pyx_t_8 = 0;
      __pyx_t_10 = 0;
      __pyx_t_10 = PyObject_GetItem(__pyx_t_11, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2906, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_indicies); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2906, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2906, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_INCREF(Py_Ellipsis);
      __Pyx_GIVEREF(Py_Ellipsis);
      PyTuple_SET_ITEM(__pyx_t_11, 0, Py_Ellipsis);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_3);
      __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_11, __pyx_t_10) < 0)) __PYX_ERR(0, 2906, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
/* … */
  __pyx_slice__490 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__490)) __PYX_ERR(0, 2906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__490);
  __Pyx_GIVEREF(__pyx_slice__490);
+2907:                                              numpy.newaxis]  # xxx swap z with y using ^
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2907, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2907, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 2908: 
+2909:             vertexArray[..., 0:5] += self.openFenceTemplates[openGateData, i][..., 0:5]
  __pyx_slice__491 = PySlice_New(__pyx_int_0, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__491)) __PYX_ERR(0, 2909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__491);
  __Pyx_GIVEREF(__pyx_slice__491);
/* … */
    __Pyx_INCREF(__pyx_tuple__492);
    __pyx_t_7 = __pyx_tuple__492;
    __pyx_t_10 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_openFenceTemplates); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_openGateData);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_openGateData);
    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_cur_scope->__pyx_v_openGateData);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_GetItem(__pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_tuple__492 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__491); if (unlikely(!__pyx_tuple__492)) __PYX_ERR(0, 2909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__492);
  __Pyx_GIVEREF(__pyx_tuple__492);
  __pyx_slice__493 = PySlice_New(__pyx_int_0, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__493)) __PYX_ERR(0, 2909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__493);
  __Pyx_GIVEREF(__pyx_slice__493);
    __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_tuple__494); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_7, __pyx_t_3) < 0)) __PYX_ERR(0, 2909, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_tuple__494 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__493); if (unlikely(!__pyx_tuple__494)) __PYX_ERR(0, 2909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__494);
  __Pyx_GIVEREF(__pyx_tuple__494);
 2910: 
+2911:             vertexArray[_ST] += texMap(blocks[openGateIndices], 0)[..., numpy.newaxis, :]
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_11 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_openGateIndices); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_4 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_2 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_t_11);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_int_0);
    __pyx_t_11 = 0;
    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_9);
    __Pyx_INCREF(__pyx_slice__495);
    __Pyx_GIVEREF(__pyx_slice__495);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_slice__495);
    __pyx_t_9 = 0;
    __pyx_t_9 = PyObject_GetItem(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3, __pyx_t_4) < 0)) __PYX_ERR(0, 2911, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__495 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__495)) __PYX_ERR(0, 2911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__495);
  __Pyx_GIVEREF(__pyx_slice__495);
 2912: 
+2913:             vertexArray.view('uint8')[_RGB] = self.openFenceTemplates[openGateData, i] \
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_openFenceTemplates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_openGateData);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_openGateData);
    PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_openGateData);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__497, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(PyObject_SetItem(__pyx_t_9, __pyx_t_4, __pyx_t_3) < 0)) __PYX_ERR(0, 2913, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__497 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__497)) __PYX_ERR(0, 2913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__497);
  __Pyx_GIVEREF(__pyx_tuple__497);
+2914:                 [..., 5][..., numpy.newaxis]
    __pyx_t_9 = PyObject_GetItem(__pyx_t_4, __pyx_tuple__496); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_GetItem(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__496 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_5); if (unlikely(!__pyx_tuple__496)) __PYX_ERR(0, 2914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__496);
  __Pyx_GIVEREF(__pyx_tuple__496);
+2915:             vertexArray.view('uint8')[_A] = 0xFF
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__498, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_A); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_3, __pyx_int_255) < 0)) __PYX_ERR(0, 2915, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__498 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__498)) __PYX_ERR(0, 2915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__498);
  __Pyx_GIVEREF(__pyx_tuple__498);
+2916:             vertexArray.view('uint8')[_RGB] *= areaBlockLights[1:-1, 1:-1, 1:-1][openGateIndices][
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__499, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_9 = PyObject_GetItem(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
/* … */
  __pyx_tuple__499 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__499)) __PYX_ERR(0, 2916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__499);
  __Pyx_GIVEREF(__pyx_tuple__499);
  __pyx_slice__500 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__500)) __PYX_ERR(0, 2916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__500);
  __Pyx_GIVEREF(__pyx_slice__500);
  __pyx_slice__501 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__501)) __PYX_ERR(0, 2916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__501);
  __Pyx_GIVEREF(__pyx_slice__501);
  __pyx_slice__502 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__502)) __PYX_ERR(0, 2916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__502);
  __Pyx_GIVEREF(__pyx_slice__502);
    __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_areaBlockLights, __pyx_tuple__503); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = PyObject_GetItem(__pyx_t_8, __pyx_cur_scope->__pyx_v_openGateIndices); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
    __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_8, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_11);
    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_11);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_1);
    __pyx_t_11 = 0;
    __pyx_t_2 = 0;
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_GetItem(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_InPlaceMultiply(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_3, __pyx_t_8) < 0)) __PYX_ERR(0, 2916, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__503 = PyTuple_Pack(3, __pyx_slice__500, __pyx_slice__501, __pyx_slice__502); if (unlikely(!__pyx_tuple__503)) __PYX_ERR(0, 2916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__503);
  __Pyx_GIVEREF(__pyx_tuple__503);
+2917:                 ..., numpy.newaxis, numpy.newaxis, numpy.newaxis]
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2918:             vertexArray.shape = (vertexArray.shape[0] * 6, 4, 6)
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_int_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_4);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_int_6);
    __pyx_t_4 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_shape, __pyx_t_3) < 0) __PYX_ERR(0, 2918, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2919:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_6;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 3;
    return __pyx_r;
    __pyx_L12_resume_from_yield:;
    __pyx_t_6 = __pyx_cur_scope->__pyx_t_0;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2919, __pyx_L1_error)
+2920:             append(vertexArray)
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_append);
    __pyx_t_4 = __pyx_cur_scope->__pyx_v_append; __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2920, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2920, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_vertexArray);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_vertexArray);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_cur_scope->__pyx_v_vertexArray);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2920, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
 2921: 
+2922:     makeVertices = fenceGateVertices
  __pyx_t_39 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_fenceGateVertices);
  if (unlikely(!__pyx_t_39)) {
    PyErr_Clear();
    __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_fenceGateVertices);
  }
  if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2922, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_39) < 0) __PYX_ERR(0, 2922, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
 2923: 
 2924: 
+2925: class StairBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_StairBlockRenderer, __pyx_n_s_StairBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_40 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_StairBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_StairBlockRenderer, __pyx_t_40) < 0) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2926:     @classmethod
  __pyx_t_40 = __Pyx_Method_ClassMethod(__pyx_t_39); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_40) < 0) __PYX_ERR(0, 2927, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+2927:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18StairBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18StairBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_18StairBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18StairBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 2927, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 2927, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2927, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.StairBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18StairBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18StairBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.StairBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_18StairBlockRenderer_4generator32(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1125 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_mats, __pyx_n_s_a); if (unlikely(!__pyx_tuple__1125)) __PYX_ERR(0, 2927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1125);
  __Pyx_GIVEREF(__pyx_tuple__1125);
/* … */
  __pyx_t_39 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18StairBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_StairBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1126)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_codeobj__1126 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1125, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 2927, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1126)) __PYX_ERR(0, 2927, __pyx_L1_error)
+2928:         return [a.ID for a in mats.AllStairs]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mats, __pyx_n_s_AllStairs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2928, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2928, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2928, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2928, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2928, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2928, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 2928, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2928, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 2928, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 2929: 
 2930:     # South - FaceXIncreasing
 2931:     # North - FaceXDecreasing
 2932:     # West - FaceZIncreasing
 2933:     # East - FaceZDecreasing
+2934:     stairTemplates = numpy.array([makeVertexTemplates(**kw) for kw in [
  __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_37 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_array); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __pyx_t_39 = PyList_New(0); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
/* … */
  __pyx_t_34 = PyTuple_New(5); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_GIVEREF(__pyx_t_36);
  PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_36);
  __Pyx_GIVEREF(__pyx_t_13);
  PyTuple_SET_ITEM(__pyx_t_34, 1, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_34, 2, __pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_34, 3, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_38);
  PyTuple_SET_ITEM(__pyx_t_34, 4, __pyx_t_38);
  __pyx_t_36 = 0;
  __pyx_t_13 = 0;
  __pyx_t_27 = 0;
  __pyx_t_8 = 0;
  __pyx_t_38 = 0;
  __pyx_t_38 = __pyx_t_34; __Pyx_INCREF(__pyx_t_38); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  for (;;) {
    if (__pyx_t_9 >= 5) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_34 = PyTuple_GET_ITEM(__pyx_t_38, __pyx_t_9); __Pyx_INCREF(__pyx_t_34); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2934, __pyx_L1_error)
    #else
    __pyx_t_34 = PySequence_ITEM(__pyx_t_38, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_34);
    #endif
    if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_kw, __pyx_t_34) < 0) __PYX_ERR(0, 2934, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
    __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeVertexTemplates); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_34);
    __pyx_t_27 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_kw);
    if (unlikely(!__pyx_t_27)) {
      PyErr_Clear();
      __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_kw);
    }
    if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    if (unlikely(__pyx_t_27 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
      __PYX_ERR(0, 2934, __pyx_L1_error)
    }
    if (likely(PyDict_CheckExact(__pyx_t_27))) {
      __pyx_t_8 = PyDict_Copy(__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2934, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    } else {
      __pyx_t_8 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_t_27, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2934, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    }
    __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_39, (PyObject*)__pyx_t_27))) __PYX_ERR(0, 2934, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  }
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
  __pyx_t_38 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_37))) {
    __pyx_t_38 = PyMethod_GET_SELF(__pyx_t_37);
    if (likely(__pyx_t_38)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_37);
      __Pyx_INCREF(__pyx_t_38);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_37, function);
    }
  }
  if (!__pyx_t_38) {
    __pyx_t_40 = __Pyx_PyObject_CallOneArg(__pyx_t_37, __pyx_t_39); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2934, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
    __Pyx_GOTREF(__pyx_t_40);
  } else {
    __pyx_t_27 = PyTuple_New(1+1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __Pyx_GIVEREF(__pyx_t_38); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_38); __pyx_t_38 = NULL;
    __Pyx_GIVEREF(__pyx_t_39);
    PyTuple_SET_ITEM(__pyx_t_27, 0+1, __pyx_t_39);
    __pyx_t_39 = 0;
    __pyx_t_40 = __Pyx_PyObject_Call(__pyx_t_37, __pyx_t_27, NULL); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  }
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_stairTemplates, __pyx_t_40) < 0) __PYX_ERR(0, 2934, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
 2935:         # South - FaceXIncreasing
+2936:         {"xmin": 0.5},
  __pyx_t_36 = PyDict_New(); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 2936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  if (PyDict_SetItem(__pyx_t_36, __pyx_n_s_xmin, __pyx_float_0_5) < 0) __PYX_ERR(0, 2936, __pyx_L1_error)
 2937:         # North - FaceXDecreasing
+2938:         {"xmax": 0.5},
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_xmax, __pyx_float_0_5) < 0) __PYX_ERR(0, 2938, __pyx_L1_error)
 2939:         # West - FaceZIncreasing
+2940:         {"zmin": 0.5},
  __pyx_t_27 = PyDict_New(); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyDict_SetItem(__pyx_t_27, __pyx_n_s_zmin, __pyx_float_0_5) < 0) __PYX_ERR(0, 2940, __pyx_L1_error)
 2941:         # East - FaceZDecreasing
+2942:         {"zmax": 0.5},
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_zmax, __pyx_float_0_5) < 0) __PYX_ERR(0, 2942, __pyx_L1_error)
 2943:         # Slabtype
+2944:         {"ymax": 0.5},
  __pyx_t_38 = PyDict_New(); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  if (PyDict_SetItem(__pyx_t_38, __pyx_n_s_ymax, __pyx_float_0_5) < 0) __PYX_ERR(0, 2944, __pyx_L1_error)
 2945:     ]
 2946:                                   ])
 2947: 
+2948:     def stairVertices(self, facingBlockIndices, blocks, blockMaterials, blockData, areaBlockLights, texMap):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18StairBlockRenderer_3stairVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18StairBlockRenderer_3stairVertices = {"stairVertices", (PyCFunction)__pyx_pw_9_renderer_18StairBlockRenderer_3stairVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18StairBlockRenderer_3stairVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockMaterials = 0;
  PyObject *__pyx_v_blockData = 0;
  CYTHON_UNUSED PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stairVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_facingBlockIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockMaterials,&__pyx_n_s_blockData,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("stairVertices", 1, 7, 7, 1); __PYX_ERR(0, 2948, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("stairVertices", 1, 7, 7, 2); __PYX_ERR(0, 2948, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockMaterials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("stairVertices", 1, 7, 7, 3); __PYX_ERR(0, 2948, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("stairVertices", 1, 7, 7, 4); __PYX_ERR(0, 2948, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("stairVertices", 1, 7, 7, 5); __PYX_ERR(0, 2948, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("stairVertices", 1, 7, 7, 6); __PYX_ERR(0, 2948, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "stairVertices") < 0)) __PYX_ERR(0, 2948, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_self = values[0];
    __pyx_v_facingBlockIndices = values[1];
    __pyx_v_blocks = values[2];
    __pyx_v_blockMaterials = values[3];
    __pyx_v_blockData = values[4];
    __pyx_v_areaBlockLights = values[5];
    __pyx_v_texMap = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stairVertices", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2948, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.StairBlockRenderer.stairVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18StairBlockRenderer_2stairVertices(__pyx_self, __pyx_v_self, __pyx_v_facingBlockIndices, __pyx_v_blocks, __pyx_v_blockMaterials, __pyx_v_blockData, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18StairBlockRenderer_2stairVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_facingBlockIndices, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockMaterials, PyObject *__pyx_v_blockData, CYTHON_UNUSED PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_39_stairVertices *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stairVertices", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_39_stairVertices *)__pyx_tp_new_9_renderer___pyx_scope_struct_39_stairVertices(__pyx_ptype_9_renderer___pyx_scope_struct_39_stairVertices, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_facingBlockIndices = __pyx_v_facingBlockIndices;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_facingBlockIndices);
  __pyx_cur_scope->__pyx_v_blocks = __pyx_v_blocks;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blocks);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blocks);
  __pyx_cur_scope->__pyx_v_blockMaterials = __pyx_v_blockMaterials;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
  __pyx_cur_scope->__pyx_v_blockData = __pyx_v_blockData;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockData);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockData);
  __pyx_cur_scope->__pyx_v_areaBlockLights = __pyx_v_areaBlockLights;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_areaBlockLights);
  __pyx_cur_scope->__pyx_v_texMap = __pyx_v_texMap;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_texMap);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_18StairBlockRenderer_4generator32, (PyObject *) __pyx_cur_scope, __pyx_n_s_stairVertices, __pyx_n_s_StairBlockRenderer_stairVertices, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 2948, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.StairBlockRenderer.stairVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_18StairBlockRenderer_4generator32(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2948, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("stairVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1127 = PyTuple_Pack(19, __pyx_n_s_self, __pyx_n_s_facingBlockIndices, __pyx_n_s_blocks, __pyx_n_s_blockMaterials, __pyx_n_s_blockData, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_arrays, __pyx_n_s_append, __pyx_n_s_materialIndices, __pyx_n_s_stairBlocks, __pyx_n_s_stairData, __pyx_n_s_stairTop, __pyx_n_s_x, __pyx_n_s_z, __pyx_n_s_y, __pyx_n_s__633, __pyx_n_s_vertexArray, __pyx_n_s_i); if (unlikely(!__pyx_tuple__1127)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1127);
  __Pyx_GIVEREF(__pyx_tuple__1127);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18StairBlockRenderer_3stairVertices, 0, __pyx_n_s_StairBlockRenderer_stairVertices, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1128)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_stairVertices, __pyx_t_40) < 0) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1128 = (PyObject*)__Pyx_PyCode_New(7, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_stairVertices, 2948, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1128)) __PYX_ERR(0, 2948, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_39_stairVertices {
  PyObject_HEAD
  PyObject *__pyx_v__;
  PyObject *__pyx_v_append;
  PyObject *__pyx_v_areaBlockLights;
  PyObject *__pyx_v_arrays;
  PyObject *__pyx_v_blockData;
  PyObject *__pyx_v_blockMaterials;
  PyObject *__pyx_v_blocks;
  PyObject *__pyx_v_facingBlockIndices;
  long __pyx_v_i;
  PyObject *__pyx_v_materialIndices;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_stairBlocks;
  PyObject *__pyx_v_stairData;
  PyObject *__pyx_v_stairTop;
  PyObject *__pyx_v_texMap;
  PyObject *__pyx_v_vertexArray;
  PyObject *__pyx_v_x;
  PyObject *__pyx_v_y;
  PyObject *__pyx_v_z;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
};

+2949:         arrays = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_arrays = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2950:         append = arrays.append
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arrays, __pyx_n_s_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_append = __pyx_t_1;
  __pyx_t_1 = 0;
+2951:         materialIndices = self.getMaterialIndices(blockMaterials)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getMaterialIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_blockMaterials); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_blockMaterials);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_blockMaterials);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_materialIndices = __pyx_t_1;
  __pyx_t_1 = 0;
+2952:         yield
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2952, __pyx_L1_error)
+2953:         stairBlocks = blocks[materialIndices]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_materialIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_stairBlocks = __pyx_t_1;
  __pyx_t_1 = 0;
+2954:         stairData = blockData[materialIndices]
  __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_blockData, __pyx_cur_scope->__pyx_v_materialIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_stairData = __pyx_t_1;
  __pyx_t_1 = 0;
+2955:         stairTop = (stairData >> 2).astype(bool)
  __pyx_t_2 = __Pyx_PyInt_RshiftObjC(__pyx_cur_scope->__pyx_v_stairData, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject*)&PyBool_Type)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2955, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2955, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_INCREF(((PyObject*)&PyBool_Type));
    __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, ((PyObject*)&PyBool_Type));
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2955, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_stairTop = __pyx_t_1;
  __pyx_t_1 = 0;
+2956:         stairData &= 3
  __pyx_t_1 = __Pyx_PyInt_AndObjC(__pyx_cur_scope->__pyx_v_stairData, __pyx_int_3, 3, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_stairData);
  __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_stairData, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
 2957: 
+2958:         x, z, y = materialIndices.nonzero()
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_materialIndices, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2958, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2958, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 2958, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); 
    } else {
      __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 2); 
    }
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
    index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    index = 2; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 2958, __pyx_L1_error)
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L6_unpacking_done;
    __pyx_L5_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 2958, __pyx_L1_error)
    __pyx_L6_unpacking_done:;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_x = __pyx_t_4;
  __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_z = __pyx_t_3;
  __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_y = __pyx_t_2;
  __pyx_t_2 = 0;
 2959: 
+2960:         for _ in ("slab", "step"):
  __pyx_t_1 = __pyx_tuple__504; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0;
  for (;;) {
    if (__pyx_t_7 >= 2) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 2960, __pyx_L1_error)
    #else
    __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
/* … */
  __pyx_tuple__504 = PyTuple_Pack(2, __pyx_n_s_slab, __pyx_n_s_step); if (unlikely(!__pyx_tuple__504)) __PYX_ERR(0, 2960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__504);
  __Pyx_GIVEREF(__pyx_tuple__504);
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2961:             vertexArray = numpy.zeros((len(x), 6, 4, 6), dtype='float32')
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_8 = PyObject_Length(__pyx_cur_scope->__pyx_v_x); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2961, __pyx_L1_error)
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_6);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_4);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_int_6);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 2961, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_vertexArray);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
+2962:             for i in xrange(3):
    for (__pyx_t_9 = 0; __pyx_t_9 < 3; __pyx_t_9+=1) {
      __pyx_cur_scope->__pyx_v_i = __pyx_t_9;
+2963:                 vertexArray[_XYZ][..., i] = (x, y, z)[i][:, numpy.newaxis, numpy.newaxis]
      __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_x);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_x);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_cur_scope->__pyx_v_x);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_y);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_y);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_cur_scope->__pyx_v_y);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_z);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_z);
      PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_cur_scope->__pyx_v_z);
      __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_t_5, __pyx_cur_scope->__pyx_v_i, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_slice__505);
      __Pyx_GIVEREF(__pyx_slice__505);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_slice__505);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
      __pyx_t_2 = 0;
      __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyInt_From_long(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(Py_Ellipsis);
      __Pyx_GIVEREF(Py_Ellipsis);
      PyTuple_SET_ITEM(__pyx_t_2, 0, Py_Ellipsis);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
      __pyx_t_5 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 2963, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
/* … */
  __pyx_slice__505 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__505)) __PYX_ERR(0, 2963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__505);
  __Pyx_GIVEREF(__pyx_slice__505);
 2964: 
+2965:             if _ == "step":
    __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_cur_scope->__pyx_v__, __pyx_n_s_step, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2965, __pyx_L1_error)
    if (__pyx_t_10) {
/* … */
      goto __pyx_L11;
    }
+2966:                 vertexArray[_XYZST] += self.stairTemplates[4][..., :5]
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_stairTemplates); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_slice__506 = PySlice_New(Py_None, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__506)) __PYX_ERR(0, 2966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__506);
  __Pyx_GIVEREF(__pyx_slice__506);
      __pyx_t_4 = PyObject_GetItem(__pyx_t_5, __pyx_tuple__507); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3, __pyx_t_5) < 0)) __PYX_ERR(0, 2966, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__507 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__506); if (unlikely(!__pyx_tuple__507)) __PYX_ERR(0, 2966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__507);
  __Pyx_GIVEREF(__pyx_tuple__507);
+2967:                 vertexArray[_XYZ][..., 1][stairTop] += 0.5
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_GetItem(__pyx_t_5, __pyx_tuple__508); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stairTop);
      __pyx_t_5 = __pyx_cur_scope->__pyx_v_stairTop;
      __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyFloat_AddObjC(__pyx_t_4, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_5, __pyx_t_2) < 0)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__508 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__508)) __PYX_ERR(0, 2967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__508);
  __Pyx_GIVEREF(__pyx_tuple__508);
 2968:             else:
+2969:                 vertexArray[_XYZST] += self.stairTemplates[stairData][..., :5]
    /*else*/ {
      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2969, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2969, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_stairTemplates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2969, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_cur_scope->__pyx_v_stairData); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2969, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_slice__509 = PySlice_New(Py_None, __pyx_int_5, Py_None); if (unlikely(!__pyx_slice__509)) __PYX_ERR(0, 2969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__509);
  __Pyx_GIVEREF(__pyx_slice__509);
      __pyx_t_2 = PyObject_GetItem(__pyx_t_4, __pyx_tuple__510); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2969, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2969, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3, __pyx_t_4) < 0)) __PYX_ERR(0, 2969, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_L11:;
  __pyx_tuple__510 = PyTuple_Pack(2, Py_Ellipsis, __pyx_slice__509); if (unlikely(!__pyx_tuple__510)) __PYX_ERR(0, 2969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__510);
  __Pyx_GIVEREF(__pyx_tuple__510);
 2970: 
+2971:             vertexArray[_ST] += texMap(stairBlocks, 0)[..., numpy.newaxis, :]
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_texMap);
    __pyx_t_5 = __pyx_cur_scope->__pyx_v_texMap; __pyx_t_11 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_11)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_8 = 1;
      }
    }
    __pyx_t_12 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    if (__pyx_t_11) {
      __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stairBlocks);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_stairBlocks);
    PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_8, __pyx_cur_scope->__pyx_v_stairBlocks);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_8, __pyx_int_0);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_5, 0, Py_Ellipsis);
    __Pyx_GIVEREF(__pyx_t_12);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_12);
    __Pyx_INCREF(__pyx_slice__511);
    __Pyx_GIVEREF(__pyx_slice__511);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_slice__511);
    __pyx_t_12 = 0;
    __pyx_t_12 = PyObject_GetItem(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_t_3, __pyx_t_5) < 0)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_slice__511 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__511)) __PYX_ERR(0, 2971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__511);
  __Pyx_GIVEREF(__pyx_slice__511);
 2972: 
+2973:             vertexArray.view('uint8')[_RGB] = self.stairTemplates[4][numpy.newaxis, ..., 5, numpy.newaxis]
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_stairTemplates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_12);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_12);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    PyTuple_SET_ITEM(__pyx_t_3, 1, Py_Ellipsis);
    __Pyx_INCREF(__pyx_int_5);
    __Pyx_GIVEREF(__pyx_int_5);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_int_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_4);
    __pyx_t_12 = 0;
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__512, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_t_3, __pyx_t_4) < 0)) __PYX_ERR(0, 2973, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__512 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__512)) __PYX_ERR(0, 2973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__512);
  __Pyx_GIVEREF(__pyx_tuple__512);
+2974:             vertexArray.view('uint8')[_RGB] *= 0xf
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__513, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = PyNumber_InPlaceMultiply(__pyx_t_5, __pyx_int_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_4, __pyx_t_12) < 0)) __PYX_ERR(0, 2974, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__513 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__513)) __PYX_ERR(0, 2974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__513);
  __Pyx_GIVEREF(__pyx_tuple__513);
+2975:             vertexArray.view('uint8')[_A] = 0xff
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2975, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__514, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2975, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_A); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2975, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_3, __pyx_int_255) < 0)) __PYX_ERR(0, 2975, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__514 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__514)) __PYX_ERR(0, 2975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__514);
  __Pyx_GIVEREF(__pyx_tuple__514);
 2976: 
+2977:             vertexArray.shape = (len(x) * 6, 4, 6)
    __pyx_t_8 = PyObject_Length(__pyx_cur_scope->__pyx_v_x); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2977, __pyx_L1_error)
    __pyx_t_3 = PyInt_FromSsize_t((__pyx_t_8 * 6)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2977, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2977, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_INCREF(__pyx_int_4);
    __Pyx_GIVEREF(__pyx_int_4);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_4);
    __Pyx_INCREF(__pyx_int_6);
    __Pyx_GIVEREF(__pyx_int_6);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_6);
    __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_vertexArray, __pyx_n_s_shape, __pyx_t_4) < 0) __PYX_ERR(0, 2977, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2978:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L12_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2978, __pyx_L1_error)
+2979:             append(vertexArray)
    __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_arrays, __pyx_cur_scope->__pyx_v_vertexArray); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 2979, __pyx_L1_error)
+2980:         self.vertexArrays = arrays
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexArrays, __pyx_cur_scope->__pyx_v_arrays) < 0) __PYX_ERR(0, 2980, __pyx_L1_error)
 2981: 
+2982:     makeVertices = stairVertices
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_stairVertices);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_stairVertices);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_40) < 0) __PYX_ERR(0, 2982, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
 2983: 
 2984: 
+2985: class VineBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_VineBlockRenderer, __pyx_n_s_VineBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_40 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_VineBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_VineBlockRenderer, __pyx_t_40) < 0) __PYX_ERR(0, 2985, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2986:     blocktypes = [alphaMaterials["minecraft:vine"].ID]
  __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_37 = PyObject_GetItem(__pyx_t_40, __pyx_kp_s_minecraft_vine); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_37, __pyx_n_s_ID); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  __pyx_t_37 = PyList_New(1); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_40);
  PyList_SET_ITEM(__pyx_t_37, 0, __pyx_t_40);
  __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_blocktypes, __pyx_t_37) < 0) __PYX_ERR(0, 2986, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
 2987: 
+2988:     SouthBit = 1  # FaceZIncreasing
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SouthBit, __pyx_int_1) < 0) __PYX_ERR(0, 2988, __pyx_L1_error)
+2989:     WestBit = 2  # FaceXDecreasing
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_WestBit, __pyx_int_2) < 0) __PYX_ERR(0, 2989, __pyx_L1_error)
+2990:     NorthBit = 4  # FaceZDecreasing
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NorthBit, __pyx_int_4) < 0) __PYX_ERR(0, 2990, __pyx_L1_error)
+2991:     EastBit = 8  # FaceXIncreasing
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_EastBit, __pyx_int_8) < 0) __PYX_ERR(0, 2991, __pyx_L1_error)
 2992: 
+2993:     renderstate = ChunkCalculator.renderstateVines
  __pyx_t_37 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_37, __pyx_n_s_renderstateVines); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_40) < 0) __PYX_ERR(0, 2993, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
 2994: 
+2995:     def vineFaceVertices(self, direction, blockIndices, exposedFaceIndices, blocks, blockData, blockLight,
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17VineBlockRenderer_1vineFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17VineBlockRenderer_1vineFaceVertices = {"vineFaceVertices", (PyCFunction)__pyx_pw_9_renderer_17VineBlockRenderer_1vineFaceVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17VineBlockRenderer_1vineFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_direction = 0;
  PyObject *__pyx_v_blockIndices = 0;
  CYTHON_UNUSED PyObject *__pyx_v_exposedFaceIndices = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockData = 0;
  PyObject *__pyx_v_blockLight = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockLight = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vineFaceVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_direction,&__pyx_n_s_blockIndices,&__pyx_n_s_exposedFaceIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockData,&__pyx_n_s_blockLight,&__pyx_n_s_facingBlockLight,&__pyx_n_s_texMap,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_direction)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("vineFaceVertices", 1, 9, 9, 1); __PYX_ERR(0, 2995, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("vineFaceVertices", 1, 9, 9, 2); __PYX_ERR(0, 2995, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exposedFaceIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("vineFaceVertices", 1, 9, 9, 3); __PYX_ERR(0, 2995, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("vineFaceVertices", 1, 9, 9, 4); __PYX_ERR(0, 2995, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("vineFaceVertices", 1, 9, 9, 5); __PYX_ERR(0, 2995, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockLight)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("vineFaceVertices", 1, 9, 9, 6); __PYX_ERR(0, 2995, __pyx_L3_error)
        }
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockLight)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("vineFaceVertices", 1, 9, 9, 7); __PYX_ERR(0, 2995, __pyx_L3_error)
        }
        case  8:
        if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("vineFaceVertices", 1, 9, 9, 8); __PYX_ERR(0, 2995, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vineFaceVertices") < 0)) __PYX_ERR(0, 2995, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_self = values[0];
    __pyx_v_direction = values[1];
    __pyx_v_blockIndices = values[2];
    __pyx_v_exposedFaceIndices = values[3];
    __pyx_v_blocks = values[4];
    __pyx_v_blockData = values[5];
    __pyx_v_blockLight = values[6];
    __pyx_v_facingBlockLight = values[7];
    __pyx_v_texMap = values[8];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("vineFaceVertices", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2995, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.VineBlockRenderer.vineFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17VineBlockRenderer_vineFaceVertices(__pyx_self, __pyx_v_self, __pyx_v_direction, __pyx_v_blockIndices, __pyx_v_exposedFaceIndices, __pyx_v_blocks, __pyx_v_blockData, __pyx_v_blockLight, __pyx_v_facingBlockLight, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17VineBlockRenderer_vineFaceVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_direction, PyObject *__pyx_v_blockIndices, CYTHON_UNUSED PyObject *__pyx_v_exposedFaceIndices, CYTHON_UNUSED PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockData, PyObject *__pyx_v_blockLight, CYTHON_UNUSED PyObject *__pyx_v_facingBlockLight, PyObject *__pyx_v_texMap) {
  PyObject *__pyx_v_bdata = NULL;
  PyObject *__pyx_v_vertexArray = NULL;
  PyObject *__pyx_v_lights = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vineFaceVertices", 0);
  __Pyx_INCREF(__pyx_v_blockIndices);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("_renderer.VineBlockRenderer.vineFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bdata);
  __Pyx_XDECREF(__pyx_v_vertexArray);
  __Pyx_XDECREF(__pyx_v_lights);
  __Pyx_XDECREF(__pyx_v_blockIndices);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1129 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_direction, __pyx_n_s_blockIndices, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blocks, __pyx_n_s_blockData, __pyx_n_s_blockLight, __pyx_n_s_facingBlockLight, __pyx_n_s_texMap, __pyx_n_s_bdata, __pyx_n_s_vertexArray, __pyx_n_s_lights); if (unlikely(!__pyx_tuple__1129)) __PYX_ERR(0, 2995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1129);
  __Pyx_GIVEREF(__pyx_tuple__1129);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17VineBlockRenderer_1vineFaceVertices, 0, __pyx_n_s_VineBlockRenderer_vineFaceVertic, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1130)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 2995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_vineFaceVertices, __pyx_t_40) < 0) __PYX_ERR(0, 2995, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1130 = (PyObject*)__Pyx_PyCode_New(9, 0, 12, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1129, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_vineFaceVertices, 2995, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1130)) __PYX_ERR(0, 2995, __pyx_L1_error)
 2996:                          facingBlockLight, texMap):
 2997: 
+2998:         bdata = blockData[blockIndices]
  __pyx_t_1 = PyObject_GetItem(__pyx_v_blockData, __pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bdata = __pyx_t_1;
  __pyx_t_1 = 0;
+2999:         blockIndices = numpy.array(blockIndices)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2999, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2999, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_INCREF(__pyx_v_blockIndices);
    __Pyx_GIVEREF(__pyx_v_blockIndices);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_blockIndices);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2999, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF_SET(__pyx_v_blockIndices, __pyx_t_1);
  __pyx_t_1 = 0;
+3000:         if direction == pymclevel.faces.FaceZIncreasing:
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3000, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3000, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_5) {
/* … */
    goto __pyx_L3;
  }
+3001:             blockIndices[blockIndices] = (bdata & 1).astype(bool)
    __pyx_t_1 = __Pyx_PyInt_AndObjC(__pyx_v_bdata, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3001, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3001, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject*)&PyBool_Type)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3001, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3001, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_INCREF(((PyObject*)&PyBool_Type));
      __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject*)&PyBool_Type));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3001, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(PyObject_SetItem(__pyx_v_blockIndices, __pyx_v_blockIndices, __pyx_t_3) < 0)) __PYX_ERR(0, 3001, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3002:         elif direction == pymclevel.faces.FaceXDecreasing:
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3002, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3002, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_5) {
/* … */
    goto __pyx_L3;
  }
+3003:             blockIndices[blockIndices] = (bdata & 2).astype(bool)
    __pyx_t_3 = __Pyx_PyInt_AndObjC(__pyx_v_bdata, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3003, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_astype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3003, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_3) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject*)&PyBool_Type)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(((PyObject*)&PyBool_Type));
      __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject*)&PyBool_Type));
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(PyObject_SetItem(__pyx_v_blockIndices, __pyx_v_blockIndices, __pyx_t_4) < 0)) __PYX_ERR(0, 3003, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3004:         elif direction == pymclevel.faces.FaceZDecreasing:
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3004, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3004, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {
/* … */
    goto __pyx_L3;
  }
+3005:             blockIndices[blockIndices] = (bdata & 4).astype(bool)
    __pyx_t_4 = __Pyx_PyInt_AndObjC(__pyx_v_bdata, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3005, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3005, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject*)&PyBool_Type)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3005, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3005, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(((PyObject*)&PyBool_Type));
      __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, ((PyObject*)&PyBool_Type));
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3005, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(__pyx_v_blockIndices, __pyx_v_blockIndices, __pyx_t_2) < 0)) __PYX_ERR(0, 3005, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3006:         elif direction == pymclevel.faces.FaceXIncreasing:
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3006, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3006, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {
/* … */
    goto __pyx_L3;
  }
+3007:             blockIndices[blockIndices] = (bdata & 8).astype(bool)
    __pyx_t_2 = __Pyx_PyInt_AndObjC(__pyx_v_bdata, __pyx_int_8, 8, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3007, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_astype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3007, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject*)&PyBool_Type)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3007, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3007, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(((PyObject*)&PyBool_Type));
      __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject*)&PyBool_Type));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3007, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(PyObject_SetItem(__pyx_v_blockIndices, __pyx_v_blockIndices, __pyx_t_1) < 0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3008:         else:
+3009:             return []
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3009, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;
+3010:         vertexArray = self.makeTemplate(direction, blockIndices)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_v_direction);
  __Pyx_GIVEREF(__pyx_v_direction);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_direction);
  __Pyx_INCREF(__pyx_v_blockIndices);
  __Pyx_GIVEREF(__pyx_v_blockIndices);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_blockIndices);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_vertexArray = __pyx_t_1;
  __pyx_t_1 = 0;
+3011:         if not len(vertexArray):
  __pyx_t_6 = PyObject_Length(__pyx_v_vertexArray); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 3011, __pyx_L1_error)
  __pyx_t_5 = ((!(__pyx_t_6 != 0)) != 0);
  if (__pyx_t_5) {
/* … */
  }
+3012:             return vertexArray
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_vertexArray);
    __pyx_r = __pyx_v_vertexArray;
    goto __pyx_L0;
 3013: 
+3014:         vertexArray[_ST] += texMap(self.blocktypes[0], [0], direction)[:, numpy.newaxis, 0:2]
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_blocktypes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_v_texMap);
  __pyx_t_8 = __pyx_v_texMap; __pyx_t_9 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_10 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__pyx_t_9) {
    __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_6, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_6, __pyx_t_4);
  __Pyx_INCREF(__pyx_v_direction);
  __Pyx_GIVEREF(__pyx_v_direction);
  PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_6, __pyx_v_direction);
  __pyx_t_7 = 0;
  __pyx_t_4 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_slice__515 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__515)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__515);
  __Pyx_GIVEREF(__pyx_slice__515);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_slice__515);
  __Pyx_GIVEREF(__pyx_slice__515);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_slice__515);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10);
  __Pyx_INCREF(__pyx_slice__516);
  __Pyx_GIVEREF(__pyx_slice__516);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_slice__516);
  __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetItem(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_vertexArray, __pyx_t_1, __pyx_t_8) < 0)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_slice__516 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__516)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__516);
  __Pyx_GIVEREF(__pyx_slice__516);
 3015: 
+3016:         lights = blockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
  __pyx_t_1 = PyObject_GetItem(__pyx_v_blockLight, __pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_8, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_3);
  __pyx_t_10 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_lights = __pyx_t_3;
  __pyx_t_3 = 0;
+3017:         vertexArray.view('uint8')[_RGB] *= lights
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__517, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_8, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_10 = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_lights); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_3, __pyx_t_10) < 0)) __PYX_ERR(0, 3017, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_tuple__517 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__517)) __PYX_ERR(0, 3017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__517);
  __Pyx_GIVEREF(__pyx_tuple__517);
 3018: 
+3019:         vertexArray.view('uint8')[_RGB] = vertexArray.view('uint8')[_RGB].astype(float) * LeafBlockRenderer.leafColor
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__518, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyObject_GetItem(__pyx_t_10, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_astype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)(&PyFloat_Type))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3019, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3019, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
    __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
    PyTuple_SET_ITEM(__pyx_t_10, 0+1, ((PyObject *)(&PyFloat_Type)));
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3019, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LeafBlockRenderer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_leafColor); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Multiply(__pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
/* … */
  __pyx_tuple__518 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__518)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__518);
  __Pyx_GIVEREF(__pyx_tuple__518);
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__519, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_10, __pyx_t_3) < 0)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_tuple__519 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__519)) __PYX_ERR(0, 3019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__519);
  __Pyx_GIVEREF(__pyx_tuple__519);
 3020: 
+3021:         if direction == pymclevel.faces.FaceZIncreasing:
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_FaceZIncreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__pyx_t_5) {
/* … */
  }
+3022:             vertexArray[_XYZ][..., 2] -= 0.0625
    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_3 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_INCREF(__pyx_tuple__520);
    __pyx_t_11 = __pyx_tuple__520;
    __pyx_t_10 = PyObject_GetItem(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_10, __pyx_float_0_0625, 0.0625, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_11, __pyx_t_8) < 0)) __PYX_ERR(0, 3022, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__520 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__520)) __PYX_ERR(0, 3022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__520);
  __Pyx_GIVEREF(__pyx_tuple__520);
+3023:         if direction == pymclevel.faces.FaceXDecreasing:
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceXDecreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3023, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3023, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__pyx_t_5) {
/* … */
  }
+3024:             vertexArray[_XYZ][..., 0] += 0.0625
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_INCREF(__pyx_tuple__521);
    __pyx_t_11 = __pyx_tuple__521;
    __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = __Pyx_PyFloat_AddObjC(__pyx_t_8, __pyx_float_0_0625, 0.0625, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_11, __pyx_t_10) < 0)) __PYX_ERR(0, 3024, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__521 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__521)) __PYX_ERR(0, 3024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__521);
  __Pyx_GIVEREF(__pyx_tuple__521);
+3025:         if direction == pymclevel.faces.FaceZDecreasing:
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_FaceZDecreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3025, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3025, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__pyx_t_5) {
/* … */
  }
+3026:             vertexArray[_XYZ][..., 2] += 0.0625
    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3026, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_3 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3026, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_INCREF(__pyx_tuple__522);
    __pyx_t_11 = __pyx_tuple__522;
    __pyx_t_10 = PyObject_GetItem(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3026, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_8 = __Pyx_PyFloat_AddObjC(__pyx_t_10, __pyx_float_0_0625, 0.0625, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3026, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_11, __pyx_t_8) < 0)) __PYX_ERR(0, 3026, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__522 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_2); if (unlikely(!__pyx_tuple__522)) __PYX_ERR(0, 3026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__522);
  __Pyx_GIVEREF(__pyx_tuple__522);
+3027:         if direction == pymclevel.faces.FaceXIncreasing:
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_faces); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_FaceXIncreasing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3027, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3027, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__pyx_t_5) {
/* … */
  }
+3028:             vertexArray[_XYZ][..., 0] -= 0.0625
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_INCREF(__pyx_tuple__523);
    __pyx_t_11 = __pyx_tuple__523;
    __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = __Pyx_PyFloat_SubtractObjC(__pyx_t_8, __pyx_float_0_0625, 0.0625, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_11, __pyx_t_10) < 0)) __PYX_ERR(0, 3028, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__523 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_0); if (unlikely(!__pyx_tuple__523)) __PYX_ERR(0, 3028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__523);
  __Pyx_GIVEREF(__pyx_tuple__523);
 3029: 
+3030:         return vertexArray
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vertexArray);
  __pyx_r = __pyx_v_vertexArray;
  goto __pyx_L0;
 3031: 
+3032:     makeFaceVertices = vineFaceVertices
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_vineFaceVertices);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_vineFaceVertices);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeFaceVertices, __pyx_t_40) < 0) __PYX_ERR(0, 3032, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
 3033: 
 3034: 
+3035: class SlabBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_SlabBlockRenderer, __pyx_n_s_SlabBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_38 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_SlabBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SlabBlockRenderer, __pyx_t_38) < 0) __PYX_ERR(0, 3035, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3036:     blocktypes = [alphaMaterials["minecraft:wooden_slab"].ID,
  __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_37 = PyObject_GetItem(__pyx_t_40, __pyx_kp_s_minecraft_wooden_slab); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_37, __pyx_n_s_ID); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
/* … */
  __pyx_t_38 = PyList_New(4); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_GIVEREF(__pyx_t_40);
  PyList_SET_ITEM(__pyx_t_38, 0, __pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_37);
  PyList_SET_ITEM(__pyx_t_38, 1, __pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_27);
  PyList_SET_ITEM(__pyx_t_38, 2, __pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_39);
  PyList_SET_ITEM(__pyx_t_38, 3, __pyx_t_39);
  __pyx_t_40 = 0;
  __pyx_t_37 = 0;
  __pyx_t_27 = 0;
  __pyx_t_39 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_blocktypes, __pyx_t_38) < 0) __PYX_ERR(0, 3036, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
+3037:                   alphaMaterials["minecraft:stone_slab"].ID,
  __pyx_t_37 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __pyx_t_27 = PyObject_GetItem(__pyx_t_37, __pyx_kp_s_minecraft_stone_slab); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  __pyx_t_37 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_ID); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3038:                   alphaMaterials["minecraft:stone_slab2"].ID,
  __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_39 = PyObject_GetItem(__pyx_t_27, __pyx_kp_s_minecraft_stone_slab2); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_ID); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
+3039:                   alphaMaterials["minecraft:purpur_slab"].ID]
  __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_38 = PyObject_GetItem(__pyx_t_39, __pyx_kp_s_minecraft_purpur_slab); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_38, __pyx_n_s_ID); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
 3040: 
+3041:     def slabFaceVertices(self, direction, blockIndices, facingBlockLight, blocks, blockData, blockLight,
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_17SlabBlockRenderer_1slabFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_17SlabBlockRenderer_1slabFaceVertices = {"slabFaceVertices", (PyCFunction)__pyx_pw_9_renderer_17SlabBlockRenderer_1slabFaceVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_17SlabBlockRenderer_1slabFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_direction = 0;
  PyObject *__pyx_v_blockIndices = 0;
  CYTHON_UNUSED PyObject *__pyx_v_facingBlockLight = 0;
  PyObject *__pyx_v_blocks = 0;
  PyObject *__pyx_v_blockData = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blockLight = 0;
  PyObject *__pyx_v_areaBlockLights = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("slabFaceVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_direction,&__pyx_n_s_blockIndices,&__pyx_n_s_facingBlockLight,&__pyx_n_s_blocks,&__pyx_n_s_blockData,&__pyx_n_s_blockLight,&__pyx_n_s_areaBlockLights,&__pyx_n_s_texMap,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_direction)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("slabFaceVertices", 1, 9, 9, 1); __PYX_ERR(0, 3041, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("slabFaceVertices", 1, 9, 9, 2); __PYX_ERR(0, 3041, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockLight)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("slabFaceVertices", 1, 9, 9, 3); __PYX_ERR(0, 3041, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("slabFaceVertices", 1, 9, 9, 4); __PYX_ERR(0, 3041, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("slabFaceVertices", 1, 9, 9, 5); __PYX_ERR(0, 3041, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockLight)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("slabFaceVertices", 1, 9, 9, 6); __PYX_ERR(0, 3041, __pyx_L3_error)
        }
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_areaBlockLights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("slabFaceVertices", 1, 9, 9, 7); __PYX_ERR(0, 3041, __pyx_L3_error)
        }
        case  8:
        if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("slabFaceVertices", 1, 9, 9, 8); __PYX_ERR(0, 3041, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "slabFaceVertices") < 0)) __PYX_ERR(0, 3041, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_self = values[0];
    __pyx_v_direction = values[1];
    __pyx_v_blockIndices = values[2];
    __pyx_v_facingBlockLight = values[3];
    __pyx_v_blocks = values[4];
    __pyx_v_blockData = values[5];
    __pyx_v_blockLight = values[6];
    __pyx_v_areaBlockLights = values[7];
    __pyx_v_texMap = values[8];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("slabFaceVertices", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3041, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.SlabBlockRenderer.slabFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_17SlabBlockRenderer_slabFaceVertices(__pyx_self, __pyx_v_self, __pyx_v_direction, __pyx_v_blockIndices, __pyx_v_facingBlockLight, __pyx_v_blocks, __pyx_v_blockData, __pyx_v_blockLight, __pyx_v_areaBlockLights, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_17SlabBlockRenderer_slabFaceVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_direction, PyObject *__pyx_v_blockIndices, CYTHON_UNUSED PyObject *__pyx_v_facingBlockLight, PyObject *__pyx_v_blocks, PyObject *__pyx_v_blockData, CYTHON_UNUSED PyObject *__pyx_v_blockLight, PyObject *__pyx_v_areaBlockLights, PyObject *__pyx_v_texMap) {
  PyObject *__pyx_v_lights = NULL;
  PyObject *__pyx_v_bdata = NULL;
  PyObject *__pyx_v_top = NULL;
  PyObject *__pyx_v_vertexArray = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("slabFaceVertices", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("_renderer.SlabBlockRenderer.slabFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_lights);
  __Pyx_XDECREF(__pyx_v_bdata);
  __Pyx_XDECREF(__pyx_v_top);
  __Pyx_XDECREF(__pyx_v_vertexArray);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1131 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_direction, __pyx_n_s_blockIndices, __pyx_n_s_facingBlockLight, __pyx_n_s_blocks, __pyx_n_s_blockData, __pyx_n_s_blockLight, __pyx_n_s_areaBlockLights, __pyx_n_s_texMap, __pyx_n_s_lights, __pyx_n_s_bdata, __pyx_n_s_top, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1131)) __PYX_ERR(0, 3041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1131);
  __Pyx_GIVEREF(__pyx_tuple__1131);
/* … */
  __pyx_t_38 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_17SlabBlockRenderer_1slabFaceVertices, 0, __pyx_n_s_SlabBlockRenderer_slabFaceVertic, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1132)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_slabFaceVertices, __pyx_t_38) < 0) __PYX_ERR(0, 3041, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
  __pyx_codeobj__1132 = (PyObject*)__Pyx_PyCode_New(9, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_slabFaceVertices, 3041, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1132)) __PYX_ERR(0, 3041, __pyx_L1_error)
 3042:                          areaBlockLights, texMap):
 3043: 
+3044:         lights = areaBlockLights[blockIndices][..., numpy.newaxis, numpy.newaxis]
  __pyx_t_1 = PyObject_GetItem(__pyx_v_areaBlockLights, __pyx_v_blockIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_2, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_lights = __pyx_t_4;
  __pyx_t_4 = 0;
+3045:         bdata = blockData[blockIndices]
  __pyx_t_4 = PyObject_GetItem(__pyx_v_blockData, __pyx_v_blockIndices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_bdata = __pyx_t_4;
  __pyx_t_4 = 0;
+3046:         top = (bdata >> 3).astype(bool)
  __pyx_t_2 = __Pyx_PyInt_RshiftObjC(__pyx_v_bdata, __pyx_int_3, 3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject*)&PyBool_Type)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_INCREF(((PyObject*)&PyBool_Type));
    __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, ((PyObject*)&PyBool_Type));
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_top = __pyx_t_4;
  __pyx_t_4 = 0;
+3047:         bdata &= 7
  __pyx_t_4 = __Pyx_PyInt_AndObjC(__pyx_v_bdata, __pyx_int_7, 7, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF_SET(__pyx_v_bdata, __pyx_t_4);
  __pyx_t_4 = 0;
 3048: 
+3049:         vertexArray = self.makeTemplate(direction, blockIndices)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_INCREF(__pyx_v_direction);
  __Pyx_GIVEREF(__pyx_v_direction);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_v_direction);
  __Pyx_INCREF(__pyx_v_blockIndices);
  __Pyx_GIVEREF(__pyx_v_blockIndices);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_v_blockIndices);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_vertexArray = __pyx_t_4;
  __pyx_t_4 = 0;
+3050:         if not len(vertexArray):
  __pyx_t_5 = PyObject_Length(__pyx_v_vertexArray); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 3050, __pyx_L1_error)
  __pyx_t_6 = ((!(__pyx_t_5 != 0)) != 0);
  if (__pyx_t_6) {
/* … */
  }
+3051:             return vertexArray
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_vertexArray);
    __pyx_r = __pyx_v_vertexArray;
    goto __pyx_L0;
 3052: 
+3053:         vertexArray[_ST] += texMap(blocks[blockIndices], bdata, direction)[:, numpy.newaxis, 0:2]
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_GetItem(__pyx_v_blocks, __pyx_v_blockIndices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_texMap);
  __pyx_t_7 = __pyx_v_texMap; __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_9 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_bdata);
  __Pyx_GIVEREF(__pyx_v_bdata);
  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_v_bdata);
  __Pyx_INCREF(__pyx_v_direction);
  __Pyx_GIVEREF(__pyx_v_direction);
  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_5, __pyx_v_direction);
  __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__524 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__524)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__524);
  __Pyx_GIVEREF(__pyx_slice__524);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_slice__524);
  __Pyx_GIVEREF(__pyx_slice__524);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__524);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_9);
  __Pyx_INCREF(__pyx_slice__525);
  __Pyx_GIVEREF(__pyx_slice__525);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_slice__525);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyObject_GetItem(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_vertexArray, __pyx_t_4, __pyx_t_7) < 0)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_slice__525 = PySlice_New(__pyx_int_0, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__525)) __PYX_ERR(0, 3053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__525);
  __Pyx_GIVEREF(__pyx_slice__525);
+3054:         vertexArray.view('uint8')[_RGB] *= lights
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__526, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_9 = PyObject_GetItem(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = PyNumber_InPlaceMultiply(__pyx_t_9, __pyx_v_lights); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_4, __pyx_t_1) < 0)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_tuple__526 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__526)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__526);
  __Pyx_GIVEREF(__pyx_tuple__526);
 3055: 
+3056:         if direction == pymclevel.faces.FaceYIncreasing:
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_faces); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3056, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3056, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_6) {
/* … */
  }
+3057:             vertexArray[_XYZ][..., 1] -= 0.5
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_tuple__527);
    __pyx_t_10 = __pyx_tuple__527;
    __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyFloat_SubtractObjC(__pyx_t_4, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_10, __pyx_t_1) < 0)) __PYX_ERR(0, 3057, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_tuple__527 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__527)) __PYX_ERR(0, 3057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__527);
  __Pyx_GIVEREF(__pyx_tuple__527);
 3058: 
+3059:         if direction != pymclevel.faces.FaceYIncreasing and direction != pymclevel.faces.FaceYDecreasing:
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_faces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_FaceYIncreasing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_7, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_11) {
  } else {
    __pyx_t_6 = __pyx_t_11;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_faces); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_FaceYDecreasing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_direction, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 3059, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_6 = __pyx_t_11;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_6) {
/* … */
  }
+3060:             vertexArray[_XYZ][..., 2:4, 1] -= 0.5
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_slice__528 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__528)) __PYX_ERR(0, 3060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__528);
  __Pyx_GIVEREF(__pyx_slice__528);
    __Pyx_INCREF(__pyx_tuple__529);
    __pyx_t_10 = __pyx_tuple__529;
    __pyx_t_7 = PyObject_GetItem(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_4 = __Pyx_PyFloat_SubtractObjC(__pyx_t_7, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_10, __pyx_t_4) < 0)) __PYX_ERR(0, 3060, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__529 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__528, __pyx_int_1); if (unlikely(!__pyx_tuple__529)) __PYX_ERR(0, 3060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__529);
  __Pyx_GIVEREF(__pyx_tuple__529);
+3061:             vertexArray[_ST][..., 2:4, 1] += 8
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3061, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3061, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_slice__530 = PySlice_New(__pyx_int_2, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__530)) __PYX_ERR(0, 3061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__530);
  __Pyx_GIVEREF(__pyx_slice__530);
    __Pyx_INCREF(__pyx_tuple__531);
    __pyx_t_10 = __pyx_tuple__531;
    __pyx_t_1 = PyObject_GetItem(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3061, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_8, 8, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3061, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_10, __pyx_t_7) < 0)) __PYX_ERR(0, 3061, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_tuple__531 = PyTuple_Pack(3, Py_Ellipsis, __pyx_slice__530, __pyx_int_1); if (unlikely(!__pyx_tuple__531)) __PYX_ERR(0, 3061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__531);
  __Pyx_GIVEREF(__pyx_tuple__531);
 3062: 
+3063:         vertexArray[_XYZ][..., 1][top] += 0.5
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_XYZ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_tuple__532); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_INCREF(__pyx_v_top);
  __pyx_t_7 = __pyx_v_top;
  __pyx_t_1 = PyObject_GetItem(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_9 = __Pyx_PyFloat_AddObjC(__pyx_t_1, __pyx_float_0_5, 0.5, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_t_7, __pyx_t_9) < 0)) __PYX_ERR(0, 3063, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_tuple__532 = PyTuple_Pack(2, Py_Ellipsis, __pyx_int_1); if (unlikely(!__pyx_tuple__532)) __PYX_ERR(0, 3063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__532);
  __Pyx_GIVEREF(__pyx_tuple__532);
 3064: 
+3065:         return vertexArray
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vertexArray);
  __pyx_r = __pyx_v_vertexArray;
  goto __pyx_L0;
 3066: 
+3067:     makeFaceVertices = slabFaceVertices
  __pyx_t_38 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_slabFaceVertices);
  if (unlikely(!__pyx_t_38)) {
    PyErr_Clear();
    __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_slabFaceVertices);
  }
  if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeFaceVertices, __pyx_t_38) < 0) __PYX_ERR(0, 3067, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
 3068: 
 3069: 
 3070: # 1.9 renderer's
+3071: class EndRodRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_EndRodRenderer, __pyx_n_s_EndRodRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_27 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EndRodRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EndRodRenderer, __pyx_t_27) < 0) __PYX_ERR(0, 3071, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3072:     blocktypes = [alphaMaterials["minecraft:end_rod"].ID]
  __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_t_39 = PyObject_GetItem(__pyx_t_38, __pyx_kp_s_minecraft_end_rod); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
  __pyx_t_38 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_ID); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __pyx_t_39 = PyList_New(1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_38);
  PyList_SET_ITEM(__pyx_t_39, 0, __pyx_t_38);
  __pyx_t_38 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_blocktypes, __pyx_t_39) < 0) __PYX_ERR(0, 3072, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
 3073: 
+3074:     rodTemplate = makeVertexTemplatesFromJsonModel((7, 1, 7), (9, 16, 9), {
  __pyx_tuple__1133 = PyTuple_Pack(3, __pyx_int_7, __pyx_int_1, __pyx_int_7); if (unlikely(!__pyx_tuple__1133)) __PYX_ERR(0, 3074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1133);
  __Pyx_GIVEREF(__pyx_tuple__1133);
  __pyx_tuple__1134 = PyTuple_Pack(3, __pyx_int_9, __pyx_int_16, __pyx_int_9); if (unlikely(!__pyx_tuple__1134)) __PYX_ERR(0, 3074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1134);
  __Pyx_GIVEREF(__pyx_tuple__1134);
/* … */
  __pyx_t_38 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__1133, __pyx_tuple__1134, __pyx_t_39)); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_rodTemplate, __pyx_t_38) < 0) __PYX_ERR(0, 3074, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
+3075:         "down": (4, 2, 2, 0),
  __pyx_t_39 = PyDict_New(); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  if (PyDict_SetItem(__pyx_t_39, __pyx_n_s_down, __pyx_tuple__1135) < 0) __PYX_ERR(0, 3075, __pyx_L1_error)
/* … */
  __pyx_tuple__1135 = PyTuple_Pack(4, __pyx_int_4, __pyx_int_2, __pyx_int_2, __pyx_int_0); if (unlikely(!__pyx_tuple__1135)) __PYX_ERR(0, 3075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1135);
  __Pyx_GIVEREF(__pyx_tuple__1135);
+3076:         "up": (2, 0, 4, 2),
  if (PyDict_SetItem(__pyx_t_39, __pyx_n_s_up, __pyx_tuple__1136) < 0) __PYX_ERR(0, 3075, __pyx_L1_error)
/* … */
  __pyx_tuple__1136 = PyTuple_Pack(4, __pyx_int_2, __pyx_int_0, __pyx_int_4, __pyx_int_2); if (unlikely(!__pyx_tuple__1136)) __PYX_ERR(0, 3076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1136);
  __Pyx_GIVEREF(__pyx_tuple__1136);
+3077:         "north": (0, 0, 2, 15),
  if (PyDict_SetItem(__pyx_t_39, __pyx_n_s_north, __pyx_tuple__1137) < 0) __PYX_ERR(0, 3075, __pyx_L1_error)
/* … */
  __pyx_tuple__1137 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_2, __pyx_int_15); if (unlikely(!__pyx_tuple__1137)) __PYX_ERR(0, 3077, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1137);
  __Pyx_GIVEREF(__pyx_tuple__1137);
+3078:         "south": (0, 0, 2, 15),
  if (PyDict_SetItem(__pyx_t_39, __pyx_n_s_south, __pyx_tuple__1138) < 0) __PYX_ERR(0, 3075, __pyx_L1_error)
/* … */
  __pyx_tuple__1138 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_2, __pyx_int_15); if (unlikely(!__pyx_tuple__1138)) __PYX_ERR(0, 3078, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1138);
  __Pyx_GIVEREF(__pyx_tuple__1138);
+3079:         "west": (0, 0, 2, 15),
  if (PyDict_SetItem(__pyx_t_39, __pyx_n_s_west, __pyx_tuple__1139) < 0) __PYX_ERR(0, 3075, __pyx_L1_error)
/* … */
  __pyx_tuple__1139 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_2, __pyx_int_15); if (unlikely(!__pyx_tuple__1139)) __PYX_ERR(0, 3079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1139);
  __Pyx_GIVEREF(__pyx_tuple__1139);
+3080:         "east": (0, 0, 2, 15)
  if (PyDict_SetItem(__pyx_t_39, __pyx_n_s_east, __pyx_tuple__1140) < 0) __PYX_ERR(0, 3075, __pyx_L1_error)
/* … */
  __pyx_tuple__1140 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_2, __pyx_int_15); if (unlikely(!__pyx_tuple__1140)) __PYX_ERR(0, 3080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1140);
  __Pyx_GIVEREF(__pyx_tuple__1140);
 3081:     })
 3082: 
+3083:     rodTemplates = numpy.array([
  __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_array); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
/* … */
  __pyx_t_30 = PyList_New(8); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 3083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_30);
  __Pyx_GIVEREF(__pyx_t_37);
  PyList_SET_ITEM(__pyx_t_30, 0, __pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_39);
  PyList_SET_ITEM(__pyx_t_30, 1, __pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_30, 2, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_34);
  PyList_SET_ITEM(__pyx_t_30, 3, __pyx_t_34);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_30, 4, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_36);
  PyList_SET_ITEM(__pyx_t_30, 5, __pyx_t_36);
  __Pyx_GIVEREF(__pyx_t_40);
  PyList_SET_ITEM(__pyx_t_30, 6, __pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_35);
  PyList_SET_ITEM(__pyx_t_30, 7, __pyx_t_35);
  __pyx_t_37 = 0;
  __pyx_t_39 = 0;
  __pyx_t_8 = 0;
  __pyx_t_34 = 0;
  __pyx_t_13 = 0;
  __pyx_t_36 = 0;
  __pyx_t_40 = 0;
  __pyx_t_35 = 0;
  __pyx_t_35 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
    __pyx_t_35 = PyMethod_GET_SELF(__pyx_t_27);
    if (likely(__pyx_t_35)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_35);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_27, function);
    }
  }
  if (!__pyx_t_35) {
    __pyx_t_38 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_30); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3083, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
    __Pyx_GOTREF(__pyx_t_38);
  } else {
    __pyx_t_40 = PyTuple_New(1+1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3083, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    __Pyx_GIVEREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_35); __pyx_t_35 = NULL;
    __Pyx_GIVEREF(__pyx_t_30);
    PyTuple_SET_ITEM(__pyx_t_40, 0+1, __pyx_t_30);
    __pyx_t_30 = 0;
    __pyx_t_38 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_40, NULL); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3083, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_38);
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  }
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_rodTemplates, __pyx_t_38) < 0) __PYX_ERR(0, 3083, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
+3084:         rotateTemplate(rodTemplate, x=180),
  __pyx_t_39 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_rodTemplate);
  if (unlikely(!__pyx_t_39)) {
    PyErr_Clear();
    __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_rodTemplate);
  }
  if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  if (!(likely(((__pyx_t_39) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_39, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3084, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 0xB4;
  __pyx_t_37 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_39), &__pyx_t_17)); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
+3085:         rodTemplate,
  __pyx_t_39 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_rodTemplate);
  if (unlikely(!__pyx_t_39)) {
    PyErr_Clear();
    __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_rodTemplate);
  }
  if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
+3086:         rotateTemplate(rodTemplate, x=90),
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_rodTemplate);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_rodTemplate);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (!(likely(((__pyx_t_40) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_40, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3086, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 90;
  __pyx_t_8 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_40), &__pyx_t_17)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+3087:         rotateTemplate(rodTemplate, y=180, x=90),
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_rodTemplate);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_rodTemplate);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (!(likely(((__pyx_t_40) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_40, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3087, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0xB4;
  __pyx_t_34 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_40), &__pyx_t_17)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 3087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+3088:         rotateTemplate(rodTemplate, y=270, x=90),
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_rodTemplate);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_rodTemplate);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (!(likely(((__pyx_t_40) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_40, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3088, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0x10E;
  __pyx_t_13 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_40), &__pyx_t_17)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+3089:         rotateTemplate(rodTemplate, y=90, x=90),
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_rodTemplate);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_rodTemplate);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (!(likely(((__pyx_t_40) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_40, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3089, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 90;
  __pyx_t_36 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_40), &__pyx_t_17)); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 3089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+3090:         numpy.zeros((6, 4, 6)), numpy.zeros((6, 4, 6))
  __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_zeros); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
/* … */
  __pyx_tuple__1141 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1141)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1141);
  __Pyx_GIVEREF(__pyx_tuple__1141);
  __pyx_t_40 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_tuple__1142, NULL); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_30 = __Pyx_PyObject_GetAttrStr(__pyx_t_35, __pyx_n_s_zeros); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_30);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_tuple__1142 = PyTuple_Pack(1, __pyx_tuple__1141); if (unlikely(!__pyx_tuple__1142)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1142);
  __Pyx_GIVEREF(__pyx_tuple__1142);
  __pyx_tuple__1143 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1143)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1143);
  __Pyx_GIVEREF(__pyx_tuple__1143);
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_30, __pyx_tuple__1144, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
  __pyx_tuple__1144 = PyTuple_Pack(1, __pyx_tuple__1143); if (unlikely(!__pyx_tuple__1144)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1144);
  __Pyx_GIVEREF(__pyx_tuple__1144);
 3091:     ])
 3092: 
+3093:     handleTemplate = makeVertexTemplatesFromJsonModel((6, 0, 6), (10, 1, 10), {
  __pyx_tuple__1145 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_0, __pyx_int_6); if (unlikely(!__pyx_tuple__1145)) __PYX_ERR(0, 3093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1145);
  __Pyx_GIVEREF(__pyx_tuple__1145);
  __pyx_tuple__1146 = PyTuple_Pack(3, __pyx_int_10, __pyx_int_1, __pyx_int_10); if (unlikely(!__pyx_tuple__1146)) __PYX_ERR(0, 3093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1146);
  __Pyx_GIVEREF(__pyx_tuple__1146);
/* … */
  __pyx_t_27 = ((PyObject *)__pyx_f_9_renderer_makeVertexTemplatesFromJsonModel(__pyx_tuple__1145, __pyx_tuple__1146, __pyx_t_38)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_handleTemplate, __pyx_t_27) < 0) __PYX_ERR(0, 3093, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3094:         "down": (6, 6, 2, 2),
  __pyx_t_38 = PyDict_New(); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  if (PyDict_SetItem(__pyx_t_38, __pyx_n_s_down, __pyx_tuple__1147) < 0) __PYX_ERR(0, 3094, __pyx_L1_error)
/* … */
  __pyx_tuple__1147 = PyTuple_Pack(4, __pyx_int_6, __pyx_int_6, __pyx_int_2, __pyx_int_2); if (unlikely(!__pyx_tuple__1147)) __PYX_ERR(0, 3094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1147);
  __Pyx_GIVEREF(__pyx_tuple__1147);
+3095:         "up": (2, 2, 6, 6),
  if (PyDict_SetItem(__pyx_t_38, __pyx_n_s_up, __pyx_tuple__1148) < 0) __PYX_ERR(0, 3094, __pyx_L1_error)
/* … */
  __pyx_tuple__1148 = PyTuple_Pack(4, __pyx_int_2, __pyx_int_2, __pyx_int_6, __pyx_int_6); if (unlikely(!__pyx_tuple__1148)) __PYX_ERR(0, 3095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1148);
  __Pyx_GIVEREF(__pyx_tuple__1148);
+3096:         "north": (2, 6, 6, 7),
  if (PyDict_SetItem(__pyx_t_38, __pyx_n_s_north, __pyx_tuple__1149) < 0) __PYX_ERR(0, 3094, __pyx_L1_error)
/* … */
  __pyx_tuple__1149 = PyTuple_Pack(4, __pyx_int_2, __pyx_int_6, __pyx_int_6, __pyx_int_7); if (unlikely(!__pyx_tuple__1149)) __PYX_ERR(0, 3096, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1149);
  __Pyx_GIVEREF(__pyx_tuple__1149);
+3097:         "south": (2, 6, 6, 7),
  if (PyDict_SetItem(__pyx_t_38, __pyx_n_s_south, __pyx_tuple__1150) < 0) __PYX_ERR(0, 3094, __pyx_L1_error)
/* … */
  __pyx_tuple__1150 = PyTuple_Pack(4, __pyx_int_2, __pyx_int_6, __pyx_int_6, __pyx_int_7); if (unlikely(!__pyx_tuple__1150)) __PYX_ERR(0, 3097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1150);
  __Pyx_GIVEREF(__pyx_tuple__1150);
+3098:         "west": (2, 6, 6, 7),
  if (PyDict_SetItem(__pyx_t_38, __pyx_n_s_west, __pyx_tuple__1151) < 0) __PYX_ERR(0, 3094, __pyx_L1_error)
/* … */
  __pyx_tuple__1151 = PyTuple_Pack(4, __pyx_int_2, __pyx_int_6, __pyx_int_6, __pyx_int_7); if (unlikely(!__pyx_tuple__1151)) __PYX_ERR(0, 3098, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1151);
  __Pyx_GIVEREF(__pyx_tuple__1151);
+3099:         "east": (2, 6, 6, 7)
  if (PyDict_SetItem(__pyx_t_38, __pyx_n_s_east, __pyx_tuple__1152) < 0) __PYX_ERR(0, 3094, __pyx_L1_error)
/* … */
  __pyx_tuple__1152 = PyTuple_Pack(4, __pyx_int_2, __pyx_int_6, __pyx_int_6, __pyx_int_7); if (unlikely(!__pyx_tuple__1152)) __PYX_ERR(0, 3099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1152);
  __Pyx_GIVEREF(__pyx_tuple__1152);
 3100:     })
 3101: 
+3102:     handleTemplates = numpy.array([
  __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_38, __pyx_n_s_array); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
/* … */
  __pyx_t_37 = PyList_New(8); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_30);
  PyList_SET_ITEM(__pyx_t_37, 0, __pyx_t_30);
  __Pyx_GIVEREF(__pyx_t_38);
  PyList_SET_ITEM(__pyx_t_37, 1, __pyx_t_38);
  __Pyx_GIVEREF(__pyx_t_36);
  PyList_SET_ITEM(__pyx_t_37, 2, __pyx_t_36);
  __Pyx_GIVEREF(__pyx_t_13);
  PyList_SET_ITEM(__pyx_t_37, 3, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_34);
  PyList_SET_ITEM(__pyx_t_37, 4, __pyx_t_34);
  __Pyx_GIVEREF(__pyx_t_8);
  PyList_SET_ITEM(__pyx_t_37, 5, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_35);
  PyList_SET_ITEM(__pyx_t_37, 6, __pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_39);
  PyList_SET_ITEM(__pyx_t_37, 7, __pyx_t_39);
  __pyx_t_30 = 0;
  __pyx_t_38 = 0;
  __pyx_t_36 = 0;
  __pyx_t_13 = 0;
  __pyx_t_34 = 0;
  __pyx_t_8 = 0;
  __pyx_t_35 = 0;
  __pyx_t_39 = 0;
  __pyx_t_39 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_40))) {
    __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_40);
    if (likely(__pyx_t_39)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
      __Pyx_INCREF(__pyx_t_39);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_40, function);
    }
  }
  if (!__pyx_t_39) {
    __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_40, __pyx_t_37); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3102, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
    __Pyx_GOTREF(__pyx_t_27);
  } else {
    __pyx_t_35 = PyTuple_New(1+1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_35);
    __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_39); __pyx_t_39 = NULL;
    __Pyx_GIVEREF(__pyx_t_37);
    PyTuple_SET_ITEM(__pyx_t_35, 0+1, __pyx_t_37);
    __pyx_t_37 = 0;
    __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_35, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  }
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_handleTemplates, __pyx_t_27) < 0) __PYX_ERR(0, 3102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3103:         rotateTemplate(handleTemplate, x=180),
  __pyx_t_38 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_handleTemplate);
  if (unlikely(!__pyx_t_38)) {
    PyErr_Clear();
    __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_handleTemplate);
  }
  if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
  if (!(likely(((__pyx_t_38) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_38, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3103, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 0xB4;
  __pyx_t_30 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_38), &__pyx_t_17)); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 3103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_30);
  __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
+3104:         handleTemplate,
  __pyx_t_38 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_handleTemplate);
  if (unlikely(!__pyx_t_38)) {
    PyErr_Clear();
    __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_handleTemplate);
  }
  if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 3104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_38);
+3105:         rotateTemplate(handleTemplate, x=90),
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_handleTemplate);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_handleTemplate);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (!(likely(((__pyx_t_35) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_35, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3105, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 1;
  __pyx_t_17.x = 90;
  __pyx_t_36 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_35), &__pyx_t_17)); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 3105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3106:         rotateTemplate(handleTemplate, y=180, x=90),
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_handleTemplate);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_handleTemplate);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (!(likely(((__pyx_t_35) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_35, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3106, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0xB4;
  __pyx_t_13 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_35), &__pyx_t_17)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3107:         rotateTemplate(handleTemplate, y=270, x=90),
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_handleTemplate);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_handleTemplate);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (!(likely(((__pyx_t_35) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_35, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3107, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 0x10E;
  __pyx_t_34 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_35), &__pyx_t_17)); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 3107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3108:         rotateTemplate(handleTemplate, y=90, x=90),
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_handleTemplate);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_handleTemplate);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (!(likely(((__pyx_t_35) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_35, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3108, __pyx_L1_error)
  __pyx_t_17.__pyx_n = 2;
  __pyx_t_17.x = 90;
  __pyx_t_17.y = 90;
  __pyx_t_8 = ((PyObject *)__pyx_f_9_renderer_rotateTemplate(((PyArrayObject *)__pyx_t_35), &__pyx_t_17)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3109:         numpy.zeros((6, 4, 6)), numpy.zeros((6, 4, 6))
  __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_35, __pyx_n_s_zeros); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
/* … */
  __pyx_tuple__1153 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1153)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1153);
  __Pyx_GIVEREF(__pyx_tuple__1153);
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_tuple__1154, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_37 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_zeros); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __pyx_tuple__1154 = PyTuple_Pack(1, __pyx_tuple__1153); if (unlikely(!__pyx_tuple__1154)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1154);
  __Pyx_GIVEREF(__pyx_tuple__1154);
  __pyx_tuple__1155 = PyTuple_Pack(3, __pyx_int_6, __pyx_int_4, __pyx_int_6); if (unlikely(!__pyx_tuple__1155)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1155);
  __Pyx_GIVEREF(__pyx_tuple__1155);
  __pyx_t_39 = __Pyx_PyObject_Call(__pyx_t_37, __pyx_tuple__1156, NULL); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  __pyx_tuple__1156 = PyTuple_Pack(1, __pyx_tuple__1155); if (unlikely(!__pyx_tuple__1156)) __PYX_ERR(0, 3109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1156);
  __Pyx_GIVEREF(__pyx_tuple__1156);
 3110:     ])
 3111: 
+3112:     makeVertices = makeVerticesFromModel([rodTemplates, handleTemplates], 7)
  __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_makeVerticesFromModel); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_rodTemplates);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_rodTemplates);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_37 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_handleTemplates);
  if (unlikely(!__pyx_t_37)) {
    PyErr_Clear();
    __pyx_t_37 = __Pyx_GetModuleGlobalName(__pyx_n_s_handleTemplates);
  }
  if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __pyx_t_39 = PyList_New(2); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_35);
  PyList_SET_ITEM(__pyx_t_39, 0, __pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_37);
  PyList_SET_ITEM(__pyx_t_39, 1, __pyx_t_37);
  __pyx_t_35 = 0;
  __pyx_t_37 = 0;
  __pyx_t_37 = NULL;
  __pyx_t_9 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_40))) {
    __pyx_t_37 = PyMethod_GET_SELF(__pyx_t_40);
    if (likely(__pyx_t_37)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
      __Pyx_INCREF(__pyx_t_37);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_40, function);
      __pyx_t_9 = 1;
    }
  }
  __pyx_t_35 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (__pyx_t_37) {
    __Pyx_GIVEREF(__pyx_t_37); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_37); __pyx_t_37 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_39);
  PyTuple_SET_ITEM(__pyx_t_35, 0+__pyx_t_9, __pyx_t_39);
  __Pyx_INCREF(__pyx_int_7);
  __Pyx_GIVEREF(__pyx_int_7);
  PyTuple_SET_ITEM(__pyx_t_35, 1+__pyx_t_9, __pyx_int_7);
  __pyx_t_39 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_35, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeVertices, __pyx_t_27) < 0) __PYX_ERR(0, 3112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
 3113: 
 3114: 
+3115: class WaterBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_WaterBlockRenderer, __pyx_n_s_WaterBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_35 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_WaterBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WaterBlockRenderer, __pyx_t_35) < 0) __PYX_ERR(0, 3115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3116:     waterID = alphaMaterials["minecraft:water"].ID
  __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_40 = PyObject_GetItem(__pyx_t_27, __pyx_kp_s_minecraft_water); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_ID); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_waterID, __pyx_t_27) < 0) __PYX_ERR(0, 3116, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3117:     blocktypes = [alphaMaterials["minecraft:flowing_water"].ID, waterID]
  __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_alphaMaterials); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_40 = PyObject_GetItem(__pyx_t_27, __pyx_kp_s_minecraft_flowing_water); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_ID); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_waterID);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_waterID);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_35 = PyList_New(2); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_27);
  PyList_SET_ITEM(__pyx_t_35, 0, __pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_40);
  PyList_SET_ITEM(__pyx_t_35, 1, __pyx_t_40);
  __pyx_t_27 = 0;
  __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_blocktypes, __pyx_t_35) < 0) __PYX_ERR(0, 3117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3118:     renderstate = ChunkCalculator.renderstateWater
  __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_35, __pyx_n_s_renderstateWater); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_40) < 0) __PYX_ERR(0, 3118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
 3119: 
+3120:     @classmethod
  __pyx_t_35 = __Pyx_Method_ClassMethod(__pyx_t_40); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_35) < 0) __PYX_ERR(0, 3121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3121:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18WaterBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18WaterBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_18WaterBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18WaterBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 3121, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 3121, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3121, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.WaterBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18WaterBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18WaterBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.WaterBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1157 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1157)) __PYX_ERR(0, 3121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1157);
  __Pyx_GIVEREF(__pyx_tuple__1157);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18WaterBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_WaterBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1158)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_codeobj__1158 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1157, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 3121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1158)) __PYX_ERR(0, 3121, __pyx_L1_error)
+3122:         cls.waterID = mats["minecraft:water"].ID
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_water); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_waterID, __pyx_t_2) < 0) __PYX_ERR(0, 3122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3123:         return [mats["minecraft:flowing_water"].ID, cls.waterID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_flowing_water); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_waterID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;
 3124: 
+3125:     def waterFaceVertices(self, direction, blockIndices, exposedFaceIndices, blocks, blockData, blockLight,
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_18WaterBlockRenderer_3waterFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_18WaterBlockRenderer_3waterFaceVertices = {"waterFaceVertices", (PyCFunction)__pyx_pw_9_renderer_18WaterBlockRenderer_3waterFaceVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_18WaterBlockRenderer_3waterFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_direction = 0;
  PyObject *__pyx_v_blockIndices = 0;
  PyObject *__pyx_v_exposedFaceIndices = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blocks = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blockData = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blockLight = 0;
  PyObject *__pyx_v_facingBlockLight = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("waterFaceVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_direction,&__pyx_n_s_blockIndices,&__pyx_n_s_exposedFaceIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockData,&__pyx_n_s_blockLight,&__pyx_n_s_facingBlockLight,&__pyx_n_s_texMap,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_direction)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("waterFaceVertices", 1, 9, 9, 1); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("waterFaceVertices", 1, 9, 9, 2); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exposedFaceIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("waterFaceVertices", 1, 9, 9, 3); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("waterFaceVertices", 1, 9, 9, 4); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("waterFaceVertices", 1, 9, 9, 5); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockLight)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("waterFaceVertices", 1, 9, 9, 6); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockLight)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("waterFaceVertices", 1, 9, 9, 7); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        case  8:
        if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("waterFaceVertices", 1, 9, 9, 8); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "waterFaceVertices") < 0)) __PYX_ERR(0, 3125, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_self = values[0];
    __pyx_v_direction = values[1];
    __pyx_v_blockIndices = values[2];
    __pyx_v_exposedFaceIndices = values[3];
    __pyx_v_blocks = values[4];
    __pyx_v_blockData = values[5];
    __pyx_v_blockLight = values[6];
    __pyx_v_facingBlockLight = values[7];
    __pyx_v_texMap = values[8];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("waterFaceVertices", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3125, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.WaterBlockRenderer.waterFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_18WaterBlockRenderer_2waterFaceVertices(__pyx_self, __pyx_v_self, __pyx_v_direction, __pyx_v_blockIndices, __pyx_v_exposedFaceIndices, __pyx_v_blocks, __pyx_v_blockData, __pyx_v_blockLight, __pyx_v_facingBlockLight, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_18WaterBlockRenderer_2waterFaceVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_direction, PyObject *__pyx_v_blockIndices, PyObject *__pyx_v_exposedFaceIndices, CYTHON_UNUSED PyObject *__pyx_v_blocks, CYTHON_UNUSED PyObject *__pyx_v_blockData, CYTHON_UNUSED PyObject *__pyx_v_blockLight, PyObject *__pyx_v_facingBlockLight, PyObject *__pyx_v_texMap) {
  PyObject *__pyx_v_vertexArray = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("waterFaceVertices", 0);
  __Pyx_INCREF(__pyx_v_blockIndices);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.WaterBlockRenderer.waterFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vertexArray);
  __Pyx_XDECREF(__pyx_v_blockIndices);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1159 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_direction, __pyx_n_s_blockIndices, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blocks, __pyx_n_s_blockData, __pyx_n_s_blockLight, __pyx_n_s_facingBlockLight, __pyx_n_s_texMap, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1159)) __PYX_ERR(0, 3125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1159);
  __Pyx_GIVEREF(__pyx_tuple__1159);
/* … */
  __pyx_t_35 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_18WaterBlockRenderer_3waterFaceVertices, 0, __pyx_n_s_WaterBlockRenderer_waterFaceVert, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1160)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_waterFaceVertices, __pyx_t_35) < 0) __PYX_ERR(0, 3125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_codeobj__1160 = (PyObject*)__Pyx_PyCode_New(9, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_waterFaceVertices, 3125, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1160)) __PYX_ERR(0, 3125, __pyx_L1_error)
 3126:                           facingBlockLight, texMap):
+3127:         blockIndices = blockIndices & exposedFaceIndices
  __pyx_t_1 = PyNumber_And(__pyx_v_blockIndices, __pyx_v_exposedFaceIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_blockIndices, __pyx_t_1);
  __pyx_t_1 = 0;
+3128:         vertexArray = self.makeTemplate(direction, blockIndices)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_INCREF(__pyx_v_direction);
  __Pyx_GIVEREF(__pyx_v_direction);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_direction);
  __Pyx_INCREF(__pyx_v_blockIndices);
  __Pyx_GIVEREF(__pyx_v_blockIndices);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_blockIndices);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_vertexArray = __pyx_t_1;
  __pyx_t_1 = 0;
+3129:         vertexArray[_ST] += texMap(self.waterID, 0, 0)[numpy.newaxis, numpy.newaxis]
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waterID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_texMap);
  __pyx_t_6 = __pyx_v_texMap; __pyx_t_7 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_4 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_t_3);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_4, __pyx_int_0);
  __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
  __pyx_t_8 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_vertexArray, __pyx_t_1, __pyx_t_6) < 0)) __PYX_ERR(0, 3129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3130:         vertexArray.view('uint8')[_RGB] *= facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__533, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_GetItem(__pyx_v_facingBlockLight, __pyx_v_blockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_5, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_7);
  __pyx_t_8 = 0;
  __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_t_1, __pyx_t_5) < 0)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__533 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__533)) __PYX_ERR(0, 3130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__533);
  __Pyx_GIVEREF(__pyx_tuple__533);
+3131:         return vertexArray
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vertexArray);
  __pyx_r = __pyx_v_vertexArray;
  goto __pyx_L0;
 3132: 
+3133:     makeFaceVertices = waterFaceVertices
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_waterFaceVertices);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_waterFaceVertices);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeFaceVertices, __pyx_t_35) < 0) __PYX_ERR(0, 3133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
 3134: 
 3135: 
+3136: class IceBlockRenderer(BlockRenderer):
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9_renderer_BlockRenderer));
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_IceBlockRenderer, __pyx_n_s_IceBlockRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_35 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_IceBlockRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_IceBlockRenderer, __pyx_t_35) < 0) __PYX_ERR(0, 3136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3137:     renderstate = ChunkCalculator.renderstateIce
  __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_35, __pyx_n_s_renderstateIce); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderstate, __pyx_t_40) < 0) __PYX_ERR(0, 3137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
 3138: 
+3139:     @classmethod
  __pyx_t_35 = __Pyx_Method_ClassMethod(__pyx_t_40); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getBlocktypes, __pyx_t_35) < 0) __PYX_ERR(0, 3140, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3140:     def getBlocktypes(cls, mats):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_16IceBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_16IceBlockRenderer_1getBlocktypes = {"getBlocktypes", (PyCFunction)__pyx_pw_9_renderer_16IceBlockRenderer_1getBlocktypes, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_16IceBlockRenderer_1getBlocktypes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_mats = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_mats,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mats)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, 1); __PYX_ERR(0, 3140, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getBlocktypes") < 0)) __PYX_ERR(0, 3140, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_mats = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocktypes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3140, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.IceBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_16IceBlockRenderer_getBlocktypes(__pyx_self, __pyx_v_cls, __pyx_v_mats);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_16IceBlockRenderer_getBlocktypes(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_mats) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocktypes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.IceBlockRenderer.getBlocktypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1161 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_mats); if (unlikely(!__pyx_tuple__1161)) __PYX_ERR(0, 3140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1161);
  __Pyx_GIVEREF(__pyx_tuple__1161);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_16IceBlockRenderer_1getBlocktypes, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_IceBlockRenderer_getBlocktypes, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1162)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_codeobj__1162 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1161, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getBlocktypes, 3140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1162)) __PYX_ERR(0, 3140, __pyx_L1_error)
+3141:         cls.iceID = mats["minecraft:ice"].ID
  __pyx_t_1 = PyObject_GetItem(__pyx_v_mats, __pyx_kp_s_minecraft_ice); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_iceID, __pyx_t_2) < 0) __PYX_ERR(0, 3141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3142:         return [cls.iceID]
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_iceID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3143: 
+3144:     def iceFaceVertices(self, direction, blockIndices, exposedFaceIndices, blocks, blockData, blockLight,
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_16IceBlockRenderer_3iceFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_16IceBlockRenderer_3iceFaceVertices = {"iceFaceVertices", (PyCFunction)__pyx_pw_9_renderer_16IceBlockRenderer_3iceFaceVertices, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_16IceBlockRenderer_3iceFaceVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_direction = 0;
  PyObject *__pyx_v_blockIndices = 0;
  PyObject *__pyx_v_exposedFaceIndices = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blocks = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blockData = 0;
  CYTHON_UNUSED PyObject *__pyx_v_blockLight = 0;
  PyObject *__pyx_v_facingBlockLight = 0;
  PyObject *__pyx_v_texMap = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("iceFaceVertices (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_direction,&__pyx_n_s_blockIndices,&__pyx_n_s_exposedFaceIndices,&__pyx_n_s_blocks,&__pyx_n_s_blockData,&__pyx_n_s_blockLight,&__pyx_n_s_facingBlockLight,&__pyx_n_s_texMap,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_direction)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iceFaceVertices", 1, 9, 9, 1); __PYX_ERR(0, 3144, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iceFaceVertices", 1, 9, 9, 2); __PYX_ERR(0, 3144, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exposedFaceIndices)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iceFaceVertices", 1, 9, 9, 3); __PYX_ERR(0, 3144, __pyx_L3_error)
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iceFaceVertices", 1, 9, 9, 4); __PYX_ERR(0, 3144, __pyx_L3_error)
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockData)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iceFaceVertices", 1, 9, 9, 5); __PYX_ERR(0, 3144, __pyx_L3_error)
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blockLight)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iceFaceVertices", 1, 9, 9, 6); __PYX_ERR(0, 3144, __pyx_L3_error)
        }
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facingBlockLight)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iceFaceVertices", 1, 9, 9, 7); __PYX_ERR(0, 3144, __pyx_L3_error)
        }
        case  8:
        if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_texMap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iceFaceVertices", 1, 9, 9, 8); __PYX_ERR(0, 3144, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iceFaceVertices") < 0)) __PYX_ERR(0, 3144, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_self = values[0];
    __pyx_v_direction = values[1];
    __pyx_v_blockIndices = values[2];
    __pyx_v_exposedFaceIndices = values[3];
    __pyx_v_blocks = values[4];
    __pyx_v_blockData = values[5];
    __pyx_v_blockLight = values[6];
    __pyx_v_facingBlockLight = values[7];
    __pyx_v_texMap = values[8];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iceFaceVertices", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3144, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.IceBlockRenderer.iceFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_16IceBlockRenderer_2iceFaceVertices(__pyx_self, __pyx_v_self, __pyx_v_direction, __pyx_v_blockIndices, __pyx_v_exposedFaceIndices, __pyx_v_blocks, __pyx_v_blockData, __pyx_v_blockLight, __pyx_v_facingBlockLight, __pyx_v_texMap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_16IceBlockRenderer_2iceFaceVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_direction, PyObject *__pyx_v_blockIndices, PyObject *__pyx_v_exposedFaceIndices, CYTHON_UNUSED PyObject *__pyx_v_blocks, CYTHON_UNUSED PyObject *__pyx_v_blockData, CYTHON_UNUSED PyObject *__pyx_v_blockLight, PyObject *__pyx_v_facingBlockLight, PyObject *__pyx_v_texMap) {
  PyObject *__pyx_v_vertexArray = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("iceFaceVertices", 0);
  __Pyx_INCREF(__pyx_v_blockIndices);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.IceBlockRenderer.iceFaceVertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vertexArray);
  __Pyx_XDECREF(__pyx_v_blockIndices);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1163 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_direction, __pyx_n_s_blockIndices, __pyx_n_s_exposedFaceIndices, __pyx_n_s_blocks, __pyx_n_s_blockData, __pyx_n_s_blockLight, __pyx_n_s_facingBlockLight, __pyx_n_s_texMap, __pyx_n_s_vertexArray); if (unlikely(!__pyx_tuple__1163)) __PYX_ERR(0, 3144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1163);
  __Pyx_GIVEREF(__pyx_tuple__1163);
/* … */
  __pyx_t_35 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_16IceBlockRenderer_3iceFaceVertices, 0, __pyx_n_s_IceBlockRenderer_iceFaceVertices, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1164)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_iceFaceVertices, __pyx_t_35) < 0) __PYX_ERR(0, 3144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_codeobj__1164 = (PyObject*)__Pyx_PyCode_New(9, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1163, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_iceFaceVertices, 3144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1164)) __PYX_ERR(0, 3144, __pyx_L1_error)
 3145:                         facingBlockLight, texMap):
+3146:         blockIndices = blockIndices & exposedFaceIndices
  __pyx_t_1 = PyNumber_And(__pyx_v_blockIndices, __pyx_v_exposedFaceIndices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_blockIndices, __pyx_t_1);
  __pyx_t_1 = 0;
+3147:         vertexArray = self.makeTemplate(direction, blockIndices)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_makeTemplate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_INCREF(__pyx_v_direction);
  __Pyx_GIVEREF(__pyx_v_direction);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_direction);
  __Pyx_INCREF(__pyx_v_blockIndices);
  __Pyx_GIVEREF(__pyx_v_blockIndices);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_blockIndices);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_vertexArray = __pyx_t_1;
  __pyx_t_1 = 0;
+3148:         vertexArray[_ST] += texMap(self.iceID, 0, 0)[numpy.newaxis, numpy.newaxis]
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ST); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_v_vertexArray, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_iceID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_texMap);
  __pyx_t_6 = __pyx_v_texMap; __pyx_t_7 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_4 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_t_3);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_int_0);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_4, __pyx_int_0);
  __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
  __pyx_t_8 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_vertexArray, __pyx_t_1, __pyx_t_6) < 0)) __PYX_ERR(0, 3148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3149:         vertexArray.view('uint8')[_RGB] *= facingBlockLight[blockIndices][..., numpy.newaxis, numpy.newaxis]
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_vertexArray, __pyx_n_s_view); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__534, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGB); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_GetItem(__pyx_v_facingBlockLight, __pyx_v_blockIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(Py_Ellipsis);
  __Pyx_GIVEREF(Py_Ellipsis);
  PyTuple_SET_ITEM(__pyx_t_5, 0, Py_Ellipsis);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_7);
  __pyx_t_8 = 0;
  __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_GetItem(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_t_1, __pyx_t_5) < 0)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__534 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__534)) __PYX_ERR(0, 3149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__534);
  __Pyx_GIVEREF(__pyx_tuple__534);
+3150:         return vertexArray
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vertexArray);
  __pyx_r = __pyx_v_vertexArray;
  goto __pyx_L0;
 3151: 
+3152:     makeFaceVertices = iceFaceVertices
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_iceFaceVertices);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_iceFaceVertices);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeFaceVertices, __pyx_t_35) < 0) __PYX_ERR(0, 3152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
 3153: 
 3154: 
+3155: from glutils import DisplayList
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_DisplayList);
  __Pyx_GIVEREF(__pyx_n_s_DisplayList);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_DisplayList);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_glutils, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_DisplayList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DisplayList, __pyx_t_1) < 0) __PYX_ERR(0, 3155, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3156: 
 3157: 
+3158: class MCRenderer(object):
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_MCRenderer, __pyx_n_s_MCRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_40 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_MCRenderer, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MCRenderer, __pyx_t_40) < 0) __PYX_ERR(0, 3158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3159:     isPreviewer = False
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_isPreviewer, Py_False) < 0) __PYX_ERR(0, 3159, __pyx_L1_error)
 3160: 
+3161:     def __init__(self, level=None, alpha=1.0):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_level = 0;
  PyObject *__pyx_v_alpha = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_level,&__pyx_n_s_alpha,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)((PyObject *)Py_None));
    values[2] = ((PyObject *)((PyObject*)__pyx_float_1_0));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_level);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_alpha);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 3161, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_level = values[1];
    __pyx_v_alpha = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3161, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer___init__(__pyx_self, __pyx_v_self, __pyx_v_level, __pyx_v_alpha);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_9_renderer_10MCRenderer___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_level, PyObject *__pyx_v_alpha) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_40___init__ *__pyx_cur_scope;
  PyObject *__pyx_v_ore = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_40___init__ *)__pyx_tp_new_9_renderer___pyx_scope_struct_40___init__(__pyx_ptype_9_renderer___pyx_scope_struct_40___init__, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_INCREF(__pyx_v_alpha);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.MCRenderer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ore);
  __Pyx_XDECREF(__pyx_v_alpha);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1165 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_level, __pyx_n_s_alpha, __pyx_n_s_ore); if (unlikely(!__pyx_tuple__1165)) __PYX_ERR(0, 3161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1165);
  __Pyx_GIVEREF(__pyx_tuple__1165);
  __pyx_codeobj__1166 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1165, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_init, 3161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1166)) __PYX_ERR(0, 3161, __pyx_L1_error)
/* … */
  __pyx_t_35 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_1__init__, 0, __pyx_n_s_MCRenderer___init, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1166)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_35, __pyx_tuple__1167);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_init, __pyx_t_35) < 0) __PYX_ERR(0, 3161, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_tuple__1167 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject*)__pyx_float_1_0)); if (unlikely(!__pyx_tuple__1167)) __PYX_ERR(0, 3161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1167);
  __Pyx_GIVEREF(__pyx_tuple__1167);
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_40___init__ {
  PyObject_HEAD
  PyObject *__pyx_v_self;
};

+3162:         self.render = True
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_render, Py_True) < 0) __PYX_ERR(0, 3162, __pyx_L1_error)
+3163:         self.origin = (0, 0, 0)
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_origin, __pyx_tuple__535) < 0) __PYX_ERR(0, 3163, __pyx_L1_error)
/* … */
  __pyx_tuple__535 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__535)) __PYX_ERR(0, 3163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__535);
  __Pyx_GIVEREF(__pyx_tuple__535);
+3164:         self.rotation = 0
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_rotation, __pyx_int_0) < 0) __PYX_ERR(0, 3164, __pyx_L1_error)
 3165: 
+3166:         self.bufferUsage = 0
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_bufferUsage, __pyx_int_0) < 0) __PYX_ERR(0, 3166, __pyx_L1_error)
 3167: 
+3168:         self.invalidChunkQueue = deque()
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_deque); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3168, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3168, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_invalidChunkQueue, __pyx_t_1) < 0) __PYX_ERR(0, 3168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3169:         self._chunkWorker = None
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkWorker, Py_None) < 0) __PYX_ERR(0, 3169, __pyx_L1_error)
+3170:         self.chunkRenderers = {}
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkRenderers, __pyx_t_1) < 0) __PYX_ERR(0, 3170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3171:         self.loadableChunkMarkers = DisplayList()
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DisplayList); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3171, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3171, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_loadableChunkMarkers, __pyx_t_1) < 0) __PYX_ERR(0, 3171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3172:         self.visibleLayers = set(Layer.AllLayers)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_AllLayers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_visibleLayers, __pyx_t_2) < 0) __PYX_ERR(0, 3172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3173: 
+3174:         self.masterLists = None
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_masterLists, Py_None) < 0) __PYX_ERR(0, 3174, __pyx_L1_error)
 3175: 
+3176:         alpha *= 255
  __pyx_t_2 = PyNumber_InPlaceMultiply(__pyx_v_alpha, __pyx_int_255); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_alpha, __pyx_t_2);
  __pyx_t_2 = 0;
+3177:         self.alpha = (int(alpha) & 0xff)
  __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_v_alpha); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyInt_AndObjC(__pyx_t_2, __pyx_int_255, 0xff, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_alpha, __pyx_t_1) < 0) __PYX_ERR(0, 3177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3178: 
+3179:         self.chunkStartTime = datetime.now()
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_now); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3179, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3179, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkStartTime, __pyx_t_1) < 0) __PYX_ERR(0, 3179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3180:         self.oldChunkStartTime = self.chunkStartTime
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkStartTime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_oldChunkStartTime, __pyx_t_1) < 0) __PYX_ERR(0, 3180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3181: 
+3182:         self.oldPosition = None
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_oldPosition, Py_None) < 0) __PYX_ERR(0, 3182, __pyx_L1_error)
 3183: 
+3184:         self.chunkSamples = [timedelta(0, 0, 0)] * 15
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__536, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1 * 15); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 15; __pyx_temp++) {
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_t_3);
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkSamples, __pyx_t_1) < 0) __PYX_ERR(0, 3184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__536 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__536)) __PYX_ERR(0, 3184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__536);
  __Pyx_GIVEREF(__pyx_tuple__536);
 3185: 
+3186:         self.chunkIterator = None
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkIterator, Py_None) < 0) __PYX_ERR(0, 3186, __pyx_L1_error)
 3187: 
+3188:         config.settings.fastLeaves.addObserver(self)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_fastLeaves); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3189: 
+3190:         config.settings.roughGraphics.addObserver(self)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_settings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_roughGraphics); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3191:         config.settings.showHiddenOres.addObserver(self)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_showHiddenOres); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3192:         config.settings.vertexBufferLimit.addObserver(self)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_vertexBufferLimit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3193: 
+3194:         config.settings.drawEntities.addObserver(self)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_settings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_drawEntities); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3195:         config.settings.drawTileEntities.addObserver(self)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_drawTileEntities); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3196:         config.settings.drawTileTicks.addObserver(self)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_drawTileTicks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3197:         config.settings.drawUnpopulatedChunks.addObserver(self, "drawTerrainPopulated")
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_settings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_drawUnpopulatedChunks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_self);
  __Pyx_INCREF(__pyx_n_s_drawTerrainPopulated);
  __Pyx_GIVEREF(__pyx_n_s_drawTerrainPopulated);
  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_n_s_drawTerrainPopulated);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3198:         config.settings.drawChunkBorders.addObserver(self, "drawChunkBorder")
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_drawChunkBorders); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_self);
  __Pyx_INCREF(__pyx_n_s_drawChunkBorder);
  __Pyx_GIVEREF(__pyx_n_s_drawChunkBorder);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_n_s_drawChunkBorder);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3199:         config.settings.drawMonsters.addObserver(self)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_drawMonsters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3200:         config.settings.drawItems.addObserver(self)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_settings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_drawItems); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3201: 
+3202:         config.settings.showChunkRedraw.addObserver(self, "showRedraw")
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_showChunkRedraw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_self);
  __Pyx_INCREF(__pyx_n_s_showRedraw);
  __Pyx_GIVEREF(__pyx_n_s_showRedraw);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_n_s_showRedraw);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3203:         config.settings.spaceHeight.addObserver(self)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_spaceHeight); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3204:         config.settings.targetFPS.addObserver(self, "targetFPS")
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_settings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_targetFPS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_self);
  __Pyx_INCREF(__pyx_n_s_targetFPS);
  __Pyx_GIVEREF(__pyx_n_s_targetFPS);
  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_n_s_targetFPS);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3205:         config.settings.maxViewDistance.addObserver(self, "maxViewDistance")
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxViewDistance); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_self);
  __Pyx_INCREF(__pyx_n_s_maxViewDistance);
  __Pyx_GIVEREF(__pyx_n_s_maxViewDistance);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_n_s_maxViewDistance);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3206: 
+3207:         for ore in config.settings.hiddableOres.get():
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_hiddableOres); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3207, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3207, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3207, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3207, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3207, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3207, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3207, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 3207, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_ore, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3208:             config.settings["showOre{}".format(ore)].addObserver(self, callback=lambda x, id=ore: self.showOre(id, x))
static PyObject *__pyx_pf_9_renderer_10MCRenderer_8__init___1__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__defaults__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_id);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_id);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_id);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.MCRenderer.__init__.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_8__init___lambda3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_8__init___lambda3 = {"lambda3", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_8__init___lambda3, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_8__init___lambda3(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_id = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lambda3 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_id,0};
    PyObject* values[2] = {0,0};
    __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self);
    values[1] = __pyx_dynamic_args->__pyx_arg_id;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_id);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda3") < 0)) __PYX_ERR(0, 3208, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_id = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lambda3", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3208, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.__init__.lambda3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_lambda_funcdef_lambda3(__pyx_self, __pyx_v_x, __pyx_v_id);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_lambda_funcdef_lambda3(PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_id) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_40___init__ *__pyx_cur_scope;
  struct __pyx_obj_9_renderer___pyx_scope_struct_40___init__ *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lambda3", 0);
  __pyx_outer_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_40___init__ *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3208, __pyx_L1_error) }
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_showOre); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_INCREF(__pyx_v_id);
  __Pyx_GIVEREF(__pyx_v_id);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_id);
  __Pyx_INCREF(__pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_x);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.MCRenderer.__init__.lambda3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_showOre_2, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_ore); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3208, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3208, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_INCREF(__pyx_v_ore);
      __Pyx_GIVEREF(__pyx_v_ore);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_ore);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3208, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_addObserver); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_self);
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_8__init___lambda3, 0, __pyx_n_s_MCRenderer___init___locals_lambd, ((PyObject*)__pyx_cur_scope), __pyx_n_s_renderer, __pyx_d, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (!__Pyx_CyFunction_InitDefaults(__pyx_t_8, sizeof(__pyx_defaults), 1)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_INCREF(__pyx_v_ore);
    __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_8)->__pyx_arg_id = __pyx_v_ore;
    __Pyx_GIVEREF(__pyx_v_ore);
    __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_8, __pyx_pf_9_renderer_10MCRenderer_8__init___1__defaults__);
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_callback, __pyx_t_8) < 0) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 3209: 
+3210:         self.level = level
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_level, __pyx_v_level) < 0) __PYX_ERR(0, 3210, __pyx_L1_error)
 3211: 
+3212:         if self.level.__class__.__name__ in ("FakeLevel", "MCSchematic"):
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_class); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_FakeLevel, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3212, __pyx_L1_error)
  if (!__pyx_t_10) {
  } else {
    __pyx_t_9 = __pyx_t_10;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_MCSchematic, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3212, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_10;
  __pyx_L6_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_10 = (__pyx_t_9 != 0);
  if (__pyx_t_10) {
/* … */
  }
+3213:             self.toggleLayer(False, 'ChunkBorder')
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_toggleLayer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__537, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_tuple__537 = PyTuple_Pack(2, Py_False, __pyx_n_s_ChunkBorder); if (unlikely(!__pyx_tuple__537)) __PYX_ERR(0, 3213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__537);
  __Pyx_GIVEREF(__pyx_tuple__537);
 3214: 
+3215:     chunkClass = ChunkRenderer
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_chunkClass, ((PyObject *)__pyx_ptype_9_renderer_ChunkRenderer)) < 0) __PYX_ERR(0, 3215, __pyx_L1_error)
+3216:     calculatorClass = ChunkCalculator
  __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_calculatorClass, __pyx_t_35) < 0) __PYX_ERR(0, 3216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
 3217: 
+3218:     minViewDistance = 2
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_minViewDistance, __pyx_int_2) < 0) __PYX_ERR(0, 3218, __pyx_L1_error)
+3219:     maxViewDistance = 32
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_maxViewDistance, __pyx_int_32) < 0) __PYX_ERR(0, 3219, __pyx_L1_error)
 3220: 
+3221:     _viewDistance = 8
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_viewDistance_2, __pyx_int_8) < 0) __PYX_ERR(0, 3221, __pyx_L1_error)
 3222: 
+3223:     needsRedraw = True
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_needsRedraw, Py_True) < 0) __PYX_ERR(0, 3223, __pyx_L1_error)
 3224: 
+3225:     def toggleLayer(self, val, layer):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_3toggleLayer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_3toggleLayer = {"toggleLayer", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_3toggleLayer, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_3toggleLayer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_v_layer = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("toggleLayer (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_val,&__pyx_n_s_layer,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("toggleLayer", 1, 3, 3, 1); __PYX_ERR(0, 3225, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_layer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("toggleLayer", 1, 3, 3, 2); __PYX_ERR(0, 3225, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "toggleLayer") < 0)) __PYX_ERR(0, 3225, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
    __pyx_v_layer = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("toggleLayer", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3225, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.toggleLayer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_2toggleLayer(__pyx_self, __pyx_v_self, __pyx_v_val, __pyx_v_layer);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_2toggleLayer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_layer) {
  PyObject *__pyx_v_cr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("toggleLayer", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("_renderer.MCRenderer.toggleLayer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1168 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_val, __pyx_n_s_layer, __pyx_n_s_cr); if (unlikely(!__pyx_tuple__1168)) __PYX_ERR(0, 3225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1168);
  __Pyx_GIVEREF(__pyx_tuple__1168);
/* … */
  __pyx_t_35 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_3toggleLayer, 0, __pyx_n_s_MCRenderer_toggleLayer, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1169)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_toggleLayer, __pyx_t_35) < 0) __PYX_ERR(0, 3225, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_codeobj__1169 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1168, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_toggleLayer, 3225, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1169)) __PYX_ERR(0, 3225, __pyx_L1_error)
+3226:         if val:
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_val); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3226, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
    goto __pyx_L3;
  }
+3227:             self.visibleLayers.add(layer)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_visibleLayers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_add); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_3) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_layer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_layer);
      __Pyx_GIVEREF(__pyx_v_layer);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_layer);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3228:         else:
+3229:             self.visibleLayers.discard(layer)
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_visibleLayers); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_discard); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_layer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_v_layer);
      __Pyx_GIVEREF(__pyx_v_layer);
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_layer);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_L3:;
+3230:         for cr in self.chunkRenderers.itervalues():
  __pyx_t_6 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (unlikely(__pyx_t_5 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "itervalues");
    __PYX_ERR(0, 3230, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_dict_iterator(__pyx_t_5, 0, __pyx_n_s_itervalues, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XDECREF(__pyx_t_2);
  __pyx_t_2 = __pyx_t_3;
  __pyx_t_3 = 0;
  while (1) {
    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_7, &__pyx_t_6, NULL, &__pyx_t_3, NULL, __pyx_t_8);
    if (unlikely(__pyx_t_9 == 0)) break;
    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 3230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_cr, __pyx_t_3);
    __pyx_t_3 = 0;
+3231:             cr.invalidLayers.add(layer)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_cr, __pyx_n_s_invalidLayers); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_add); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_layer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_v_layer);
      __Pyx_GIVEREF(__pyx_v_layer);
      PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_layer);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3232: 
+3233:         self.loadNearbyChunks()
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadNearbyChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3233, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3233, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3234: 
+3235:     def layerProperty(layer, default=True):  # @NoSelf
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_5layerProperty(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_5layerProperty = {"layerProperty", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_5layerProperty, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_5layerProperty(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_layer = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("layerProperty (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_layer,&__pyx_n_s_default,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)((PyObject *)Py_True));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_layer)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_default);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "layerProperty") < 0)) __PYX_ERR(0, 3235, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_layer = values[0];
    __pyx_v_default = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("layerProperty", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3235, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.layerProperty", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_4layerProperty(__pyx_self, __pyx_v_layer, __pyx_v_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_9_renderer_10MCRenderer_4layerProperty(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_layer, PyObject *__pyx_v_default) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_41_layerProperty *__pyx_cur_scope;
  PyObject *__pyx_v__set = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("layerProperty", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_41_layerProperty *)__pyx_tp_new_9_renderer___pyx_scope_struct_41_layerProperty(__pyx_ptype_9_renderer___pyx_scope_struct_41_layerProperty, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_layer = __pyx_v_layer;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_layer);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_layer);
  __pyx_cur_scope->__pyx_v_default = __pyx_v_default;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_default);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_default);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("_renderer.MCRenderer.layerProperty", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__set);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1170 = PyTuple_Pack(7, __pyx_n_s_layer, __pyx_n_s_default, __pyx_n_s_attr, __pyx_n_s_get_2, __pyx_n_s_get_2, __pyx_n_s_set, __pyx_n_s_set); if (unlikely(!__pyx_tuple__1170)) __PYX_ERR(0, 3235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1170);
  __Pyx_GIVEREF(__pyx_tuple__1170);
  __pyx_codeobj__1171 = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1170, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_layerProperty, 3235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1171)) __PYX_ERR(0, 3235, __pyx_L1_error)
/* … */
  __pyx_t_35 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_5layerProperty, 0, __pyx_n_s_MCRenderer_layerProperty, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1171)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_35, __pyx_tuple__1172);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_layerProperty, __pyx_t_35) < 0) __PYX_ERR(0, 3235, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_tuple__1172 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__1172)) __PYX_ERR(0, 3235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1172);
  __Pyx_GIVEREF(__pyx_tuple__1172);
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_41_layerProperty {
  PyObject_HEAD
  PyObject *__pyx_v__get;
  PyObject *__pyx_v_attr;
  PyObject *__pyx_v_default;
  PyObject *__pyx_v_layer;
};

+3236:         attr = intern("_draw" + layer)
  __pyx_t_1 = PyNumber_Add(__pyx_n_s_draw, __pyx_cur_scope->__pyx_v_layer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Intern(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_attr = __pyx_t_2;
  __pyx_t_2 = 0;
 3237: 
+3238:         def _get(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_13layerProperty_1_get(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_13layerProperty_1_get = {"_get", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_13layerProperty_1_get, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_13layerProperty_1_get(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_get (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_13layerProperty__get(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_13layerProperty__get(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_41_layerProperty *__pyx_cur_scope;
  struct __pyx_obj_9_renderer___pyx_scope_struct_41_layerProperty *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_get", 0);
  __pyx_outer_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_41_layerProperty *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.MCRenderer.layerProperty._get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__538 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__538)) __PYX_ERR(0, 3238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__538);
  __Pyx_GIVEREF(__pyx_tuple__538);
/* … */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_13layerProperty_1_get, 0, __pyx_n_s_MCRenderer_layerProperty_locals, ((PyObject*)__pyx_cur_scope), __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__539)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v__get = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_codeobj__539 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__538, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_get_2, 3238, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__539)) __PYX_ERR(0, 3238, __pyx_L1_error)
+3239:             return getattr(self, attr, default)
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_v_attr)) { __Pyx_RaiseClosureNameError("attr"); __PYX_ERR(0, 3239, __pyx_L1_error) }
  __pyx_t_1 = __pyx_cur_scope->__pyx_v_attr;
  __Pyx_INCREF(__pyx_t_1);
  if (unlikely(!__pyx_cur_scope->__pyx_v_default)) { __Pyx_RaiseClosureNameError("default"); __PYX_ERR(0, 3239, __pyx_L1_error) }
  __pyx_t_2 = __pyx_cur_scope->__pyx_v_default;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_self, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;
 3240: 
+3241:         def _set(self, val):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_13layerProperty_3_set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_13layerProperty_3_set = {"_set", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_13layerProperty_3_set, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_13layerProperty_3_set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_val,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_set", 1, 2, 2, 1); __PYX_ERR(0, 3241, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_set") < 0)) __PYX_ERR(0, 3241, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3241, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.layerProperty._set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_13layerProperty_2_set(__pyx_self, __pyx_v_self, __pyx_v_val);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_13layerProperty_2_set(PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_41_layerProperty *__pyx_cur_scope;
  struct __pyx_obj_9_renderer___pyx_scope_struct_41_layerProperty *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set", 0);
  __pyx_outer_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_41_layerProperty *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.MCRenderer.layerProperty._set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__540 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_val); if (unlikely(!__pyx_tuple__540)) __PYX_ERR(0, 3241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__540);
  __Pyx_GIVEREF(__pyx_tuple__540);
/* … */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_13layerProperty_3_set, 0, __pyx_n_s_MCRenderer_layerProperty_locals_2, ((PyObject*)__pyx_cur_scope), __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__541)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__set = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_codeobj__541 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__540, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_set, 3241, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__541)) __PYX_ERR(0, 3241, __pyx_L1_error)
+3242:             if val != _get(self):
  if (unlikely(!__pyx_cur_scope->__pyx_v__get)) { __Pyx_RaiseClosureNameError("_get"); __PYX_ERR(0, 3242, __pyx_L1_error) }
  __pyx_t_1 = __pyx_pf_9_renderer_10MCRenderer_13layerProperty__get(__pyx_cur_scope->__pyx_v__get, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_val, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3242, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3242, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
/* … */
  }
+3243:                 setattr(self, attr, val)
    if (unlikely(!__pyx_cur_scope->__pyx_v_attr)) { __Pyx_RaiseClosureNameError("attr"); __PYX_ERR(0, 3243, __pyx_L1_error) }
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_attr;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = PyObject_SetAttr(__pyx_v_self, __pyx_t_2, __pyx_v_val); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 3243, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3244:                 self.toggleLayer(val, layer)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_toggleLayer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely(!__pyx_cur_scope->__pyx_v_layer)) { __Pyx_RaiseClosureNameError("layer"); __PYX_ERR(0, 3244, __pyx_L1_error) }
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_val);
    __Pyx_GIVEREF(__pyx_v_val);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_val);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_layer);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_layer);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_layer);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3245: 
+3246:         return property(_get, _set)
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v__get);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v__get);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v__get);
  __Pyx_INCREF(__pyx_v__set);
  __Pyx_GIVEREF(__pyx_v__set);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v__set);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3247: 
+3248:     drawEntities = layerProperty(Layer.Entities)
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_layerProperty);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_layerProperty);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Entities); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_40);
  PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_40);
  __pyx_t_40 = 0;
  __pyx_t_40 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_27, NULL); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawEntities, __pyx_t_40) < 0) __PYX_ERR(0, 3248, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+3249:     drawTileEntities = layerProperty(Layer.TileEntities)
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_layerProperty);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_layerProperty);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_TileEntities); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_35 = PyTuple_New(1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_35, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawTileEntities, __pyx_t_27) < 0) __PYX_ERR(0, 3249, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3250:     drawTileTicks = layerProperty(Layer.TileTicks)
  __pyx_t_27 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_layerProperty);
  if (unlikely(!__pyx_t_27)) {
    PyErr_Clear();
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_layerProperty);
  }
  if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_35 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_TileTicks); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_40 = PyTuple_New(1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_35);
  PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_35);
  __pyx_t_35 = 0;
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_40, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawTileTicks, __pyx_t_35) < 0) __PYX_ERR(0, 3250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3251:     drawMonsters = layerProperty(Layer.Monsters)
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_layerProperty);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_layerProperty);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Monsters); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_40);
  PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_40);
  __pyx_t_40 = 0;
  __pyx_t_40 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_27, NULL); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawMonsters, __pyx_t_40) < 0) __PYX_ERR(0, 3251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+3252:     drawItems = layerProperty(Layer.Items)
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_layerProperty);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_layerProperty);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Items); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_35 = PyTuple_New(1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_35, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawItems, __pyx_t_27) < 0) __PYX_ERR(0, 3252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3253:     drawTerrainPopulated = layerProperty(Layer.TerrainPopulated)
  __pyx_t_27 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_layerProperty);
  if (unlikely(!__pyx_t_27)) {
    PyErr_Clear();
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_layerProperty);
  }
  if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_35 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_TerrainPopulated); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_40 = PyTuple_New(1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_35);
  PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_35);
  __pyx_t_35 = 0;
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_40, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawTerrainPopulated, __pyx_t_35) < 0) __PYX_ERR(0, 3253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3254:     drawChunkBorder = layerProperty(Layer.ChunkBorder)
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_layerProperty);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_layerProperty);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_ChunkBorder); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_GIVEREF(__pyx_t_40);
  PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_40);
  __pyx_t_40 = 0;
  __pyx_t_40 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_27, NULL); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawChunkBorder, __pyx_t_40) < 0) __PYX_ERR(0, 3254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
 3255: 
+3256:     def inSpace(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_7inSpace(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_7inSpace = {"inSpace", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_7inSpace, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_7inSpace(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("inSpace (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_6inSpace(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_6inSpace(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("inSpace", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.MCRenderer.inSpace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1173 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_h); if (unlikely(!__pyx_tuple__1173)) __PYX_ERR(0, 3256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1173);
  __Pyx_GIVEREF(__pyx_tuple__1173);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_7inSpace, 0, __pyx_n_s_MCRenderer_inSpace, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1174)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_inSpace, __pyx_t_40) < 0) __PYX_ERR(0, 3256, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1174 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1173, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_inSpace, 3256, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1174)) __PYX_ERR(0, 3256, __pyx_L1_error)
+3257:         if self.level is None:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 == Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
  }
+3258:             return True
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;
+3259:         h = self.position[1]
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_position); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_h = __pyx_t_4;
  __pyx_t_4 = 0;
+3260:         if self.level.dimNo == 1:
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dimNo); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3260, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_3) {
/* … */
  }
+3261:             _2478aq_heot(h)
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_2478aq_heot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3261, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3261, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_v_h);
      __Pyx_GIVEREF(__pyx_v_h);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_h);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3261, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3262:         return ((h > self.level.Height + self.spaceHeight) or
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Height); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_spaceHeight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_h, __pyx_t_5, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3262, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3262, __pyx_L1_error)
  if (!__pyx_t_3) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L5_bool_binop_done;
  }
+3263:                 (h <= -self.spaceHeight))
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_spaceHeight); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_h, __pyx_t_5, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3263, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_4 = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_L5_bool_binop_done:;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;
 3264: 
+3265:     def chunkDistance(self, cpos):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_9chunkDistance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_9chunkDistance = {"chunkDistance", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_9chunkDistance, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_9chunkDistance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_cpos = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("chunkDistance (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_cpos,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cpos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("chunkDistance", 1, 2, 2, 1); __PYX_ERR(0, 3265, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "chunkDistance") < 0)) __PYX_ERR(0, 3265, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_cpos = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("chunkDistance", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3265, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.chunkDistance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_8chunkDistance(__pyx_self, __pyx_v_self, __pyx_v_cpos);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_8chunkDistance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_cpos) {
  PyObject *__pyx_v_camx = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_camy = NULL;
  PyObject *__pyx_v_camz = NULL;
  PyObject *__pyx_v_ox = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_oy = NULL;
  PyObject *__pyx_v_oz = NULL;
  PyObject *__pyx_v_camcx = NULL;
  PyObject *__pyx_v_camcz = NULL;
  PyObject *__pyx_v_cx = NULL;
  PyObject *__pyx_v_cz = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("chunkDistance", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.MCRenderer.chunkDistance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_camx);
  __Pyx_XDECREF(__pyx_v_camy);
  __Pyx_XDECREF(__pyx_v_camz);
  __Pyx_XDECREF(__pyx_v_ox);
  __Pyx_XDECREF(__pyx_v_oy);
  __Pyx_XDECREF(__pyx_v_oz);
  __Pyx_XDECREF(__pyx_v_camcx);
  __Pyx_XDECREF(__pyx_v_camcz);
  __Pyx_XDECREF(__pyx_v_cx);
  __Pyx_XDECREF(__pyx_v_cz);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1175 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_cpos, __pyx_n_s_camx, __pyx_n_s_camy, __pyx_n_s_camz, __pyx_n_s_ox, __pyx_n_s_oy, __pyx_n_s_oz, __pyx_n_s_camcx, __pyx_n_s_camcz, __pyx_n_s_cx, __pyx_n_s_cz); if (unlikely(!__pyx_tuple__1175)) __PYX_ERR(0, 3265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1175);
  __Pyx_GIVEREF(__pyx_tuple__1175);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_9chunkDistance, 0, __pyx_n_s_MCRenderer_chunkDistance, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1176)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_chunkDistance, __pyx_t_40) < 0) __PYX_ERR(0, 3265, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1176 = (PyObject*)__Pyx_PyCode_New(2, 0, 12, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1175, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_chunkDistance, 3265, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1176)) __PYX_ERR(0, 3265, __pyx_L1_error)
+3266:         camx, camy, camz = self.position
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_position); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 3266, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 3266, __pyx_L1_error)
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 3266, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_camx = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_camy = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_camz = __pyx_t_4;
  __pyx_t_4 = 0;
 3267: 
 3268:         # if the renderer is offset into the world somewhere, adjust for that
+3269:         ox, oy, oz = self.origin
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_origin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 3269, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); 
    } else {
      __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 2); 
    }
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
    index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    index = 2; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 3269, __pyx_L1_error)
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L6_unpacking_done;
    __pyx_L5_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 3269, __pyx_L1_error)
    __pyx_L6_unpacking_done:;
  }
  __pyx_v_ox = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_v_oy = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_oz = __pyx_t_2;
  __pyx_t_2 = 0;
+3270:         camx -= ox
  __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_v_camx, __pyx_v_ox); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_camx, __pyx_t_1);
  __pyx_t_1 = 0;
+3271:         camz -= oz
  __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_v_camz, __pyx_v_oz); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_camz, __pyx_t_1);
  __pyx_t_1 = 0;
 3272: 
+3273:         camcx = int(numpy.floor(camx)) >> 4
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_floor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_camx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_INCREF(__pyx_v_camx);
    __Pyx_GIVEREF(__pyx_v_camx);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_camx);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_RshiftObjC(__pyx_t_3, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_camcx = __pyx_t_1;
  __pyx_t_1 = 0;
+3274:         camcz = int(numpy.floor(camz)) >> 4
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_floor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_camz); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_v_camz);
    __Pyx_GIVEREF(__pyx_v_camz);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_camz);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_RshiftObjC(__pyx_t_4, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_camcz = __pyx_t_1;
  __pyx_t_1 = 0;
 3275: 
+3276:         cx, cz = cpos
  if ((likely(PyTuple_CheckExact(__pyx_v_cpos))) || (PyList_CheckExact(__pyx_v_cpos))) {
    PyObject* sequence = __pyx_v_cpos;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 3276, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_2 = PyObject_GetIter(__pyx_v_cpos); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext;
    index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_2); if (unlikely(!__pyx_t_1)) goto __pyx_L7_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_2); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_2), 2) < 0) __PYX_ERR(0, 3276, __pyx_L1_error)
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L8_unpacking_done;
    __pyx_L7_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 3276, __pyx_L1_error)
    __pyx_L8_unpacking_done:;
  }
  __pyx_v_cx = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_cz = __pyx_t_4;
  __pyx_t_4 = 0;
 3277: 
+3278:         return max(abs(cx - camcx), abs(cz - camcz))
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = PyNumber_Subtract(__pyx_v_cz, __pyx_v_camcz); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyNumber_Absolute(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Subtract(__pyx_v_cx, __pyx_v_camcx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyNumber_Absolute(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_7) {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = __pyx_t_1;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = __pyx_t_2;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  goto __pyx_L0;
 3279: 
+3280:     overheadMode = False
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_overheadMode, Py_False) < 0) __PYX_ERR(0, 3280, __pyx_L1_error)
 3281: 
+3282:     def detailLevelForChunk(self, cpos):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_11detailLevelForChunk(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_11detailLevelForChunk = {"detailLevelForChunk", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_11detailLevelForChunk, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_11detailLevelForChunk(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_cpos = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("detailLevelForChunk (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_cpos,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cpos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("detailLevelForChunk", 1, 2, 2, 1); __PYX_ERR(0, 3282, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "detailLevelForChunk") < 0)) __PYX_ERR(0, 3282, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_cpos = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("detailLevelForChunk", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3282, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.detailLevelForChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_10detailLevelForChunk(__pyx_self, __pyx_v_self, __pyx_v_cpos);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_10detailLevelForChunk(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_cpos) {
  PyObject *__pyx_v_w = NULL;
  PyObject *__pyx_v_l = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_h = NULL;
  PyObject *__pyx_v_distance = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("detailLevelForChunk", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.MCRenderer.detailLevelForChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XDECREF(__pyx_v_h);
  __Pyx_XDECREF(__pyx_v_distance);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1177 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_cpos, __pyx_n_s_w, __pyx_n_s_l, __pyx_n_s_h, __pyx_n_s_distance); if (unlikely(!__pyx_tuple__1177)) __PYX_ERR(0, 3282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1177);
  __Pyx_GIVEREF(__pyx_tuple__1177);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_11detailLevelForChunk, 0, __pyx_n_s_MCRenderer_detailLevelForChunk, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1178)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_detailLevelForChunk, __pyx_t_40) < 0) __PYX_ERR(0, 3282, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1178 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_detailLevelForChunk, 3282, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1178)) __PYX_ERR(0, 3282, __pyx_L1_error)
+3283:         if self.overheadMode:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overheadMode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+3284:             return 2
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_2);
    __pyx_r = __pyx_int_2;
    goto __pyx_L0;
+3285:         if self.isPreviewer:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isPreviewer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+3286:             w, l, h = self.level.bounds.size
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_bounds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
      PyObject* sequence = __pyx_t_1;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3286, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_3);
      index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 3286, __pyx_L1_error)
      __pyx_t_7 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3286, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __pyx_v_w = __pyx_t_3;
    __pyx_t_3 = 0;
    __pyx_v_l = __pyx_t_4;
    __pyx_t_4 = 0;
    __pyx_v_h = __pyx_t_5;
    __pyx_t_5 = 0;
+3287:             if w + l < 256:
    __pyx_t_1 = PyNumber_Add(__pyx_v_w, __pyx_v_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_256, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3287, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3287, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_2) {
/* … */
    }
+3288:                 return 0
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_int_0);
      __pyx_r = __pyx_int_0;
      goto __pyx_L0;
 3289: 
+3290:         distance = self.chunkDistance(cpos) - self.viewDistance
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkDistance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_cpos); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_v_cpos);
    __Pyx_GIVEREF(__pyx_v_cpos);
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_cpos);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_viewDistance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyNumber_Subtract(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_distance = __pyx_t_3;
  __pyx_t_3 = 0;
+3291:         if distance > 0 or self.inSpace():
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_distance, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3291, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (!__pyx_t_8) {
  } else {
    __pyx_t_2 = __pyx_t_8;
    goto __pyx_L9_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_inSpace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3291, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3291, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __pyx_t_8;
  __pyx_L9_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+3292:             return 1
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_1);
    __pyx_r = __pyx_int_1;
    goto __pyx_L0;
+3293:         return 0
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_int_0);
  __pyx_r = __pyx_int_0;
  goto __pyx_L0;
 3294: 
+3295:     def getViewDistance(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_13getViewDistance(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_13getViewDistance = {"getViewDistance", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_13getViewDistance, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_13getViewDistance(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getViewDistance (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_12getViewDistance(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_12getViewDistance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getViewDistance", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.MCRenderer.getViewDistance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1179 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1179)) __PYX_ERR(0, 3295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1179);
  __Pyx_GIVEREF(__pyx_tuple__1179);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_13getViewDistance, 0, __pyx_n_s_MCRenderer_getViewDistance, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1180)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getViewDistance, __pyx_t_40) < 0) __PYX_ERR(0, 3295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1180 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getViewDistance, 3295, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1180)) __PYX_ERR(0, 3295, __pyx_L1_error)
+3296:         return self._viewDistance
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_viewDistance_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3297: 
+3298:     def setViewDistance(self, vd):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_15setViewDistance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_15setViewDistance = {"setViewDistance", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_15setViewDistance, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_15setViewDistance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_vd = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setViewDistance (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_vd,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vd)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("setViewDistance", 1, 2, 2, 1); __PYX_ERR(0, 3298, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setViewDistance") < 0)) __PYX_ERR(0, 3298, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_vd = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setViewDistance", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3298, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.setViewDistance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_14setViewDistance(__pyx_self, __pyx_v_self, __pyx_v_vd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_14setViewDistance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_vd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setViewDistance", 0);
  __Pyx_INCREF(__pyx_v_vd);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.MCRenderer.setViewDistance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vd);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1181 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_vd); if (unlikely(!__pyx_tuple__1181)) __PYX_ERR(0, 3298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1181);
  __Pyx_GIVEREF(__pyx_tuple__1181);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_15setViewDistance, 0, __pyx_n_s_MCRenderer_setViewDistance, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1182)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_setViewDistance, __pyx_t_40) < 0) __PYX_ERR(0, 3298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1182 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1181, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_setViewDistance, 3298, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1182)) __PYX_ERR(0, 3298, __pyx_L1_error)
+3299:         vd = int(vd) & 0xfffe
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_vd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AndObjC(__pyx_t_1, __pyx_int_65534, 0xfffe, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_vd, __pyx_t_2);
  __pyx_t_2 = 0;
+3300:         vd = min(max(vd, self.minViewDistance), self.maxViewDistance)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_maxViewDistance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_minViewDistance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_vd);
  __pyx_t_3 = __pyx_v_vd;
  __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3300, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_6) {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = __pyx_t_1;
  } else {
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = __pyx_t_3;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = __pyx_t_4;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3300, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_6) {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = __pyx_t_2;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = __pyx_t_1;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF_SET(__pyx_v_vd, __pyx_t_2);
  __pyx_t_2 = 0;
+3301:         if vd != self._viewDistance:
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_viewDistance_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_vd, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3301, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3301, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_6) {
/* … */
  }
+3302:             self._viewDistance = vd
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_viewDistance_2, __pyx_v_vd) < 0) __PYX_ERR(0, 3302, __pyx_L1_error)
+3303:             self.viewDistanceChanged()
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_viewDistanceChanged); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_1) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3303, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3303, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3304: 
+3305:     viewDistance = property(getViewDistance, setViewDistance, None, "View Distance")
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_getViewDistance);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_getViewDistance);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_27 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_setViewDistance);
  if (unlikely(!__pyx_t_27)) {
    PyErr_Clear();
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_setViewDistance);
  }
  if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_35 = PyTuple_New(4); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_40);
  PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_35, 1, __pyx_t_27);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_35, 2, Py_None);
  __Pyx_INCREF(__pyx_kp_s_View_Distance);
  __Pyx_GIVEREF(__pyx_kp_s_View_Distance);
  PyTuple_SET_ITEM(__pyx_t_35, 3, __pyx_kp_s_View_Distance);
  __pyx_t_40 = 0;
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_35, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_viewDistance, __pyx_t_27) < 0) __PYX_ERR(0, 3305, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
 3306: 
+3307:     @property
  __pyx_t_35 = PyTuple_New(1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_35, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_effectiveViewDistance, __pyx_t_27) < 0) __PYX_ERR(0, 3308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3308:     def effectiveViewDistance(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_17effectiveViewDistance(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_17effectiveViewDistance = {"effectiveViewDistance", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_17effectiveViewDistance, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_17effectiveViewDistance(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effectiveViewDistance (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_16effectiveViewDistance(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_16effectiveViewDistance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effectiveViewDistance", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.MCRenderer.effectiveViewDistance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1183 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1183)) __PYX_ERR(0, 3308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1183);
  __Pyx_GIVEREF(__pyx_tuple__1183);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_17effectiveViewDistance, 0, __pyx_n_s_MCRenderer_effectiveViewDistance, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1184)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_codeobj__1184 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1183, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_effectiveViewDistance, 3308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1184)) __PYX_ERR(0, 3308, __pyx_L1_error)
+3309:         if self.inSpace():
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_inSpace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3309, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3309, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {
/* … */
  }
+3310:             return self.viewDistance * 4
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_viewDistance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_int_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
 3311:         else:
+3312:             return self.viewDistance * 2
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_viewDistance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_int_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }
 3313: 
+3314:     def viewDistanceChanged(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_19viewDistanceChanged(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_19viewDistanceChanged = {"viewDistanceChanged", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_19viewDistanceChanged, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_19viewDistanceChanged(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("viewDistanceChanged (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_18viewDistanceChanged(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_18viewDistanceChanged(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("viewDistanceChanged", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.MCRenderer.viewDistanceChanged", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1185 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1185)) __PYX_ERR(0, 3314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1185);
  __Pyx_GIVEREF(__pyx_tuple__1185);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_19viewDistanceChanged, 0, __pyx_n_s_MCRenderer_viewDistanceChanged, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1186)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_viewDistanceChanged, __pyx_t_27) < 0) __PYX_ERR(0, 3314, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1186 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_viewDistanceChanged, 3314, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1186)) __PYX_ERR(0, 3314, __pyx_L1_error)
+3315:         self.oldPosition = None  # xxx
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_oldPosition, Py_None) < 0) __PYX_ERR(0, 3315, __pyx_L1_error)
+3316:         self.discardMasterList()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardMasterList); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3316, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3316, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3317:         self.loadNearbyChunks()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadNearbyChunks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3317, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3317, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3318:         self.discardChunksOutsideViewDistance()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardChunksOutsideViewDistance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3318, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3318, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3319: 
+3320:     maxWorkFactor = 64
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_maxWorkFactor, __pyx_int_64) < 0) __PYX_ERR(0, 3320, __pyx_L1_error)
+3321:     minWorkFactor = 1
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_minWorkFactor, __pyx_int_1) < 0) __PYX_ERR(0, 3321, __pyx_L1_error)
+3322:     workFactor = 4
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_workFactor, __pyx_int_4) < 0) __PYX_ERR(0, 3322, __pyx_L1_error)
 3323: 
+3324:     chunkCalculator = None
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_chunkCalculator, Py_None) < 0) __PYX_ERR(0, 3324, __pyx_L1_error)
 3325: 
+3326:     _level = None
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_level_2, Py_None) < 0) __PYX_ERR(0, 3326, __pyx_L1_error)
 3327: 
+3328:     @property
  __pyx_t_35 = PyTuple_New(1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_35, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_level, __pyx_t_27) < 0) __PYX_ERR(0, 3329, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3329:     def level(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_21level(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_21level = {"level", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_21level, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_21level(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("level (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_20level(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_20level(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("level", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.MCRenderer.level", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1187 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1187)) __PYX_ERR(0, 3329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1187);
  __Pyx_GIVEREF(__pyx_tuple__1187);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_21level, 0, __pyx_n_s_MCRenderer_level, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1188)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_codeobj__1188 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1187, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_level, 3329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1188)) __PYX_ERR(0, 3329, __pyx_L1_error)
+3330:         return self._level
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3331: 
+3332:     @level.setter
  __pyx_t_35 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_level);
  if (unlikely(!__pyx_t_35)) {
    PyErr_Clear();
    __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_level);
  }
  if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_35, __pyx_n_s_setter); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+3333:     def level(self, level):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_23level(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9_renderer_10MCRenderer_22level[] = " this probably warrants creating a new renderer ";
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_23level = {"level", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_23level, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9_renderer_10MCRenderer_22level};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_23level(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_level = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("level (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_level,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_level)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("level", 1, 2, 2, 1); __PYX_ERR(0, 3333, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "level") < 0)) __PYX_ERR(0, 3333, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_level = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("level", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3333, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.level", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_22level(__pyx_self, __pyx_v_self, __pyx_v_level);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_22level(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_level) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("level", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.MCRenderer.level", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1189 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_level); if (unlikely(!__pyx_tuple__1189)) __PYX_ERR(0, 3333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1189);
  __Pyx_GIVEREF(__pyx_tuple__1189);
/* … */
  __pyx_t_35 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_23level, 0, __pyx_n_s_MCRenderer_level, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1190)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_39 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_40))) {
    __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_40);
    if (likely(__pyx_t_39)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
      __Pyx_INCREF(__pyx_t_39);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_40, function);
    }
  }
  if (!__pyx_t_39) {
    __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_40, __pyx_t_35); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3332, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
    __Pyx_GOTREF(__pyx_t_27);
  } else {
    __pyx_t_37 = PyTuple_New(1+1); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3332, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_37);
    __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_37, 0, __pyx_t_39); __pyx_t_39 = NULL;
    __Pyx_GIVEREF(__pyx_t_35);
    PyTuple_SET_ITEM(__pyx_t_37, 0+1, __pyx_t_35);
    __pyx_t_35 = 0;
    __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_37, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3332, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  }
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_level, __pyx_t_27) < 0) __PYX_ERR(0, 3333, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1190 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1189, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_level, 3333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1190)) __PYX_ERR(0, 3333, __pyx_L1_error)
 3334:         """ this probably warrants creating a new renderer """
+3335:         self.stopWork()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_stopWork); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3335, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3335, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3336: 
+3337:         self._level = level
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_level_2, __pyx_v_level) < 0) __PYX_ERR(0, 3337, __pyx_L1_error)
+3338:         self.oldPosition = None
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_oldPosition, Py_None) < 0) __PYX_ERR(0, 3338, __pyx_L1_error)
+3339:         self.position = (0, 0, 0)
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_position, __pyx_tuple__542) < 0) __PYX_ERR(0, 3339, __pyx_L1_error)
/* … */
  __pyx_tuple__542 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__542)) __PYX_ERR(0, 3339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__542);
  __Pyx_GIVEREF(__pyx_tuple__542);
+3340:         self.chunkCalculator = None
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_chunkCalculator, Py_None) < 0) __PYX_ERR(0, 3340, __pyx_L1_error)
 3341: 
+3342:         self.invalidChunkQueue = deque()
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_deque); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3342, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3342, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_invalidChunkQueue, __pyx_t_1) < 0) __PYX_ERR(0, 3342, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3343: 
+3344:         self.discardAllChunks()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardAllChunks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3344, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3344, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3345: 
+3346:         self.loadableChunkMarkers.invalidate()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadableChunkMarkers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_invalidate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3346, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3346, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3347: 
+3348:         if level:
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_level); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3348, __pyx_L1_error)
  if (__pyx_t_4) {
/* … */
  }
+3349:             self.chunkCalculator = self.calculatorClass(self.level)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calculatorClass); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3349, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_chunkCalculator, __pyx_t_1) < 0) __PYX_ERR(0, 3349, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3350: 
+3351:             self.oldPosition = None
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_oldPosition, Py_None) < 0) __PYX_ERR(0, 3351, __pyx_L1_error)
 3352: 
+3353:         self.loadNearbyChunks()
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadNearbyChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3353, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3353, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3354: 
+3355:     position = (0, 0, 0)
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_position, __pyx_tuple__1191) < 0) __PYX_ERR(0, 3355, __pyx_L1_error)
/* … */
  __pyx_tuple__1191 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__1191)) __PYX_ERR(0, 3355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1191);
  __Pyx_GIVEREF(__pyx_tuple__1191);
 3356: 
+3357:     def loadChunksStartingFrom(self, wx, wz, distance=None):  # world position
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_25loadChunksStartingFrom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_25loadChunksStartingFrom = {"loadChunksStartingFrom", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_25loadChunksStartingFrom, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_25loadChunksStartingFrom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_wx = 0;
  PyObject *__pyx_v_wz = 0;
  PyObject *__pyx_v_distance = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loadChunksStartingFrom (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_wx,&__pyx_n_s_wz,&__pyx_n_s_distance,0};
    PyObject* values[4] = {0,0,0,0};
    values[3] = ((PyObject *)((PyObject *)Py_None));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_wx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("loadChunksStartingFrom", 0, 3, 4, 1); __PYX_ERR(0, 3357, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_wz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("loadChunksStartingFrom", 0, 3, 4, 2); __PYX_ERR(0, 3357, __pyx_L3_error)
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_distance);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "loadChunksStartingFrom") < 0)) __PYX_ERR(0, 3357, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_wx = values[1];
    __pyx_v_wz = values[2];
    __pyx_v_distance = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("loadChunksStartingFrom", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3357, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.loadChunksStartingFrom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_24loadChunksStartingFrom(__pyx_self, __pyx_v_self, __pyx_v_wx, __pyx_v_wz, __pyx_v_distance);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_24loadChunksStartingFrom(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_wx, PyObject *__pyx_v_wz, PyObject *__pyx_v_distance) {
  PyObject *__pyx_v_d = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loadChunksStartingFrom", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.MCRenderer.loadChunksStartingFrom", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_d);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_10MCRenderer_28generator33(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1192 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_wx, __pyx_n_s_wz, __pyx_n_s_distance, __pyx_n_s_d); if (unlikely(!__pyx_tuple__1192)) __PYX_ERR(0, 3357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1192);
  __Pyx_GIVEREF(__pyx_tuple__1192);
  __pyx_codeobj__1193 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_loadChunksStartingFrom, 3357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1193)) __PYX_ERR(0, 3357, __pyx_L1_error)
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_25loadChunksStartingFrom, 0, __pyx_n_s_MCRenderer_loadChunksStartingFro, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1193)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_27, __pyx_tuple__1194);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_loadChunksStartingFrom, __pyx_t_27) < 0) __PYX_ERR(0, 3357, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_tuple__1194 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__1194)) __PYX_ERR(0, 3357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1194);
  __Pyx_GIVEREF(__pyx_tuple__1194);
+3358:         if None is self.level:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (Py_None == __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
  }
+3359:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
+3360:         if self.level.saving:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_saving); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_3) {
/* … */
  }
+3361:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
 3362: 
+3363:         if distance is None:
  __pyx_t_3 = (__pyx_v_distance == Py_None);
  __pyx_t_2 = (__pyx_t_3 != 0);
  if (__pyx_t_2) {
/* … */
    goto __pyx_L5;
  }
+3364:             d = self.effectiveViewDistance
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_effectiveViewDistance); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_d = __pyx_t_4;
    __pyx_t_4 = 0;
 3365:         else:
+3366:             d = distance
  /*else*/ {
    __Pyx_INCREF(__pyx_v_distance);
    __pyx_v_d = __pyx_v_distance;
  }
  __pyx_L5:;
 3367: 
+3368:         self.chunkIterator = self.iterateChunks(wx, wz, d * 2)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_iterateChunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_d, __pyx_int_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_6) {
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
  }
  __Pyx_INCREF(__pyx_v_wx);
  __Pyx_GIVEREF(__pyx_v_wx);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_wx);
  __Pyx_INCREF(__pyx_v_wz);
  __Pyx_GIVEREF(__pyx_v_wz);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_wz);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_chunkIterator, __pyx_t_4) < 0) __PYX_ERR(0, 3368, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3369: 
+3370:     def iterateChunks(self, x, z, d):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_27iterateChunks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_27iterateChunks = {"iterateChunks", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_27iterateChunks, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_27iterateChunks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_z = 0;
  PyObject *__pyx_v_d = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("iterateChunks (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_z,&__pyx_n_s_d,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iterateChunks", 1, 4, 4, 1); __PYX_ERR(0, 3370, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_z)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iterateChunks", 1, 4, 4, 2); __PYX_ERR(0, 3370, __pyx_L3_error)
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("iterateChunks", 1, 4, 4, 3); __PYX_ERR(0, 3370, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iterateChunks") < 0)) __PYX_ERR(0, 3370, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_self = values[0];
    __pyx_v_x = values[1];
    __pyx_v_z = values[2];
    __pyx_v_d = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iterateChunks", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3370, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.iterateChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_26iterateChunks(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_z, __pyx_v_d);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_26iterateChunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_z, PyObject *__pyx_v_d) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_42_iterateChunks *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("iterateChunks", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_42_iterateChunks *)__pyx_tp_new_9_renderer___pyx_scope_struct_42_iterateChunks(__pyx_ptype_9_renderer___pyx_scope_struct_42_iterateChunks, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_x = __pyx_v_x;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_x);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_x);
  __pyx_cur_scope->__pyx_v_z = __pyx_v_z;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_z);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_z);
  __pyx_cur_scope->__pyx_v_d = __pyx_v_d;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_d);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_d);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_10MCRenderer_28generator33, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterateChunks, __pyx_n_s_MCRenderer_iterateChunks, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 3370, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.iterateChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_10MCRenderer_28generator33(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3370, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("iterateChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1195 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_z, __pyx_n_s_d, __pyx_n_s_cx, __pyx_n_s_cz, __pyx_n_s_step, __pyx_n_s_dir, __pyx_n_s_i); if (unlikely(!__pyx_tuple__1195)) __PYX_ERR(0, 3370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1195);
  __Pyx_GIVEREF(__pyx_tuple__1195);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_27iterateChunks, 0, __pyx_n_s_MCRenderer_iterateChunks, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1196)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_iterateChunks, __pyx_t_27) < 0) __PYX_ERR(0, 3370, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1196 = (PyObject*)__Pyx_PyCode_New(4, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1195, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_iterateChunks, 3370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1196)) __PYX_ERR(0, 3370, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_42_iterateChunks {
  PyObject_HEAD
  PyObject *__pyx_v_cx;
  PyObject *__pyx_v_cz;
  PyObject *__pyx_v_d;
  PyObject *__pyx_v_dir;
  PyObject *__pyx_v_i;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_step;
  PyObject *__pyx_v_x;
  PyObject *__pyx_v_z;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

+3371:         cx = x >> 4
  __pyx_t_1 = __Pyx_PyInt_RshiftObjC(__pyx_cur_scope->__pyx_v_x, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_cx = __pyx_t_1;
  __pyx_t_1 = 0;
+3372:         cz = z >> 4
  __pyx_t_1 = __Pyx_PyInt_RshiftObjC(__pyx_cur_scope->__pyx_v_z, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_cz = __pyx_t_1;
  __pyx_t_1 = 0;
 3373: 
+3374:         yield (cx, cz)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cx);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cx);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_cx);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cz);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cz);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_cz);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  /* return from generator, yielding value */
  __pyx_generator->resume_label = 1;
  return __pyx_r;
  __pyx_L4_resume_from_yield:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3374, __pyx_L1_error)
 3375: 
+3376:         step = dir = 1
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  __pyx_cur_scope->__pyx_v_step = __pyx_int_1;
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  __pyx_cur_scope->__pyx_v_dir = __pyx_int_1;
 3377: 
+3378:         while 1:
  while (1) {
+3379:             for i in xrange(step):
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_step);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_step);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_step);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_xrange, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
      __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
      __pyx_t_4 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3379, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      if (likely(!__pyx_t_4)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3379, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3379, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        } else {
          if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3379, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3379, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        }
      } else {
        __pyx_t_2 = __pyx_t_4(__pyx_t_1);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 3379, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3380:                 cx += dir
      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_cur_scope->__pyx_v_cx, __pyx_cur_scope->__pyx_v_dir); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_cx);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_cx, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
+3381:                 yield (cx, cz)
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cx);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cx);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_cx);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cz);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cz);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_cur_scope->__pyx_v_cz);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 2;
      return __pyx_r;
      __pyx_L9_resume_from_yield:;
      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
      __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3381, __pyx_L1_error)
 3382: 
+3383:             for i in xrange(step):
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_step);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_step);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_step);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_xrange, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
      __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
      __pyx_t_4 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3383, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3383, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      if (likely(!__pyx_t_4)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3383, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3383, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        } else {
          if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3383, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3383, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        }
      } else {
        __pyx_t_2 = __pyx_t_4(__pyx_t_1);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 3383, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3384:                 cz += dir
      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_cur_scope->__pyx_v_cz, __pyx_cur_scope->__pyx_v_dir); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_cz);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_cz, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
+3385:                 yield (cx, cz)
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3385, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cx);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cx);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_cx);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cz);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cz);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_cur_scope->__pyx_v_cz);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 3;
      return __pyx_r;
      __pyx_L12_resume_from_yield:;
      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
      __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3385, __pyx_L1_error)
 3386: 
+3387:             step += 1
    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_step, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_step);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_step, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
+3388:             if step > d and not self.overheadMode:
    __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_step, __pyx_cur_scope->__pyx_v_d, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3388, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3388, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L14_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_overheadMode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3388, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3388, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = ((!__pyx_t_6) != 0);
    __pyx_t_5 = __pyx_t_7;
    __pyx_L14_bool_binop_done:;
    if (__pyx_t_5) {
/* … */
    }
+3389:                 raise StopIteration
      __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
      __PYX_ERR(0, 3389, __pyx_L1_error)
 3390: 
+3391:             dir = -dir
    __pyx_t_1 = PyNumber_Negative(__pyx_cur_scope->__pyx_v_dir); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_dir);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_dir, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
  }
 3392: 
+3393:     chunkIterator = None
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_chunkIterator, Py_None) < 0) __PYX_ERR(0, 3393, __pyx_L1_error)
 3394: 
+3395:     @property
  __pyx_t_40 = PyTuple_New(1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_40, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_chunkWorker_2, __pyx_t_27) < 0) __PYX_ERR(0, 3396, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3396:     def chunkWorker(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_30chunkWorker(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_30chunkWorker = {"chunkWorker", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_30chunkWorker, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_30chunkWorker(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("chunkWorker (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_29chunkWorker(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_29chunkWorker(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("chunkWorker", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.MCRenderer.chunkWorker", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1197 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1197)) __PYX_ERR(0, 3396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1197);
  __Pyx_GIVEREF(__pyx_tuple__1197);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_30chunkWorker, 0, __pyx_n_s_MCRenderer_chunkWorker, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1198)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_codeobj__1198 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1197, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_chunkWorker_2, 3396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1198)) __PYX_ERR(0, 3396, __pyx_L1_error)
+3397:         if self._chunkWorker is None:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkWorker); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 == Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
  }
+3398:             self._chunkWorker = self.makeWorkIterator()
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_makeWorkIterator); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3398, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3398, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_chunkWorker, __pyx_t_1) < 0) __PYX_ERR(0, 3398, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3399:         return self._chunkWorker
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkWorker); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3400: 
+3401:     def stopWork(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_32stopWork(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_32stopWork = {"stopWork", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_32stopWork, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_32stopWork(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stopWork (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_31stopWork(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_31stopWork(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stopWork", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.stopWork", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1199 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1199)) __PYX_ERR(0, 3401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1199);
  __Pyx_GIVEREF(__pyx_tuple__1199);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_32stopWork, 0, __pyx_n_s_MCRenderer_stopWork, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1200)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_stopWork, __pyx_t_27) < 0) __PYX_ERR(0, 3401, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1200 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1199, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_stopWork, 3401, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1200)) __PYX_ERR(0, 3401, __pyx_L1_error)
+3402:         self._chunkWorker = None
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_chunkWorker, Py_None) < 0) __PYX_ERR(0, 3402, __pyx_L1_error)
 3403: 
+3404:     def discardAllChunks(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_34discardAllChunks(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_34discardAllChunks = {"discardAllChunks", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_34discardAllChunks, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_34discardAllChunks(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardAllChunks (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_33discardAllChunks(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_33discardAllChunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardAllChunks", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.MCRenderer.discardAllChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1201 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1201)) __PYX_ERR(0, 3404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1201);
  __Pyx_GIVEREF(__pyx_tuple__1201);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_34discardAllChunks, 0, __pyx_n_s_MCRenderer_discardAllChunks, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1202)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_discardAllChunks, __pyx_t_27) < 0) __PYX_ERR(0, 3404, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1202 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1201, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_discardAllChunks, 3404, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1202)) __PYX_ERR(0, 3404, __pyx_L1_error)
+3405:         self.bufferUsage = 0
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_bufferUsage, __pyx_int_0) < 0) __PYX_ERR(0, 3405, __pyx_L1_error)
+3406:         self.forgetAllDisplayLists()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_forgetAllDisplayLists); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3406, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3406, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3407:         self.chunkRenderers = {}
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers, __pyx_t_1) < 0) __PYX_ERR(0, 3407, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3408:         self.oldPosition = None  # xxx force reload
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_oldPosition, Py_None) < 0) __PYX_ERR(0, 3408, __pyx_L1_error)
 3409: 
+3410:     def discardChunksInBox(self, box):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_36discardChunksInBox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_36discardChunksInBox = {"discardChunksInBox", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_36discardChunksInBox, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_36discardChunksInBox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_box = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardChunksInBox (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_box,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_box)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("discardChunksInBox", 1, 2, 2, 1); __PYX_ERR(0, 3410, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "discardChunksInBox") < 0)) __PYX_ERR(0, 3410, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_box = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("discardChunksInBox", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3410, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.discardChunksInBox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_35discardChunksInBox(__pyx_self, __pyx_v_self, __pyx_v_box);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_35discardChunksInBox(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_box) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardChunksInBox", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.MCRenderer.discardChunksInBox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1203 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_box); if (unlikely(!__pyx_tuple__1203)) __PYX_ERR(0, 3410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1203);
  __Pyx_GIVEREF(__pyx_tuple__1203);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_36discardChunksInBox, 0, __pyx_n_s_MCRenderer_discardChunksInBox, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1204)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_discardChunksInBox, __pyx_t_27) < 0) __PYX_ERR(0, 3410, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1204 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1203, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_discardChunksInBox, 3410, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1204)) __PYX_ERR(0, 3410, __pyx_L1_error)
+3411:         self.discardChunks(box.chunkPositions)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardChunks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_chunkPositions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3411, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3412: 
+3413:     def discardChunksOutsideViewDistance(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_38discardChunksOutsideViewDistance(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_38discardChunksOutsideViewDistance = {"discardChunksOutsideViewDistance", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_38discardChunksOutsideViewDistance, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_38discardChunksOutsideViewDistance(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardChunksOutsideViewDistance (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_37discardChunksOutsideViewDistance(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_37discardChunksOutsideViewDistance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_d = NULL;
  PyObject *__pyx_v_cx = NULL;
  PyObject *__pyx_v_cz = NULL;
  PyObject *__pyx_v_origin = NULL;
  PyObject *__pyx_v_size = NULL;
  PyObject *__pyx_v_ox = NULL;
  PyObject *__pyx_v_oz = NULL;
  PyObject *__pyx_v_chunks = NULL;
  PyObject *__pyx_v_outsideChunks = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardChunksOutsideViewDistance", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.MCRenderer.discardChunksOutsideViewDistance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_d);
  __Pyx_XDECREF(__pyx_v_cx);
  __Pyx_XDECREF(__pyx_v_cz);
  __Pyx_XDECREF(__pyx_v_origin);
  __Pyx_XDECREF(__pyx_v_size);
  __Pyx_XDECREF(__pyx_v_ox);
  __Pyx_XDECREF(__pyx_v_oz);
  __Pyx_XDECREF(__pyx_v_chunks);
  __Pyx_XDECREF(__pyx_v_outsideChunks);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1205 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_d, __pyx_n_s_cx, __pyx_n_s_cz, __pyx_n_s_origin, __pyx_n_s_size, __pyx_n_s_ox, __pyx_n_s_oz, __pyx_n_s_chunks, __pyx_n_s_outsideChunks); if (unlikely(!__pyx_tuple__1205)) __PYX_ERR(0, 3413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1205);
  __Pyx_GIVEREF(__pyx_tuple__1205);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_38discardChunksOutsideViewDistance, 0, __pyx_n_s_MCRenderer_discardChunksOutsideV, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1206)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_discardChunksOutsideViewDistance, __pyx_t_27) < 0) __PYX_ERR(0, 3413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1206 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1205, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_discardChunksOutsideViewDistance, 3413, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1206)) __PYX_ERR(0, 3413, __pyx_L1_error)
+3414:         if self.overheadMode:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overheadMode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3414, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+3415:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
 3416: 
 3417:         # print "discardChunksOutsideViewDistance"
+3418:         d = self.effectiveViewDistance
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_effectiveViewDistance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_d = __pyx_t_1;
  __pyx_t_1 = 0;
+3419:         cx = (self.position[0] - self.origin[0]) / 16
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_position); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_origin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cx = __pyx_t_4;
  __pyx_t_4 = 0;
+3420:         cz = (self.position[2] - self.origin[2]) / 16
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_position); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_origin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_int_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_cz = __pyx_t_3;
  __pyx_t_3 = 0;
 3421: 
+3422:         origin = (cx - d, cz - d)
  __pyx_t_3 = PyNumber_Subtract(__pyx_v_cx, __pyx_v_d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Subtract(__pyx_v_cz, __pyx_v_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_v_origin = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+3423:         size = d * 2
  __pyx_t_1 = PyNumber_Multiply(__pyx_v_d, __pyx_int_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_size = __pyx_t_1;
  __pyx_t_1 = 0;
 3424: 
+3425:         if not len(self.chunkRenderers):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 3425, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = ((!(__pyx_t_5 != 0)) != 0);
  if (__pyx_t_2) {
/* … */
  }
+3426:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
+3427:         (ox, oz) = origin
  if (1) {
    PyObject* sequence = __pyx_v_origin;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 3427, __pyx_L1_error)
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
  }
  __pyx_v_ox = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_oz = __pyx_t_4;
  __pyx_t_4 = 0;
+3428:         chunks = numpy.fromiter(self.chunkRenderers.iterkeys(), dtype='i,i', count=len(self.chunkRenderers))
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_fromiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_iterkeys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3428, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3428, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_kp_s_i_i) < 0) __PYX_ERR(0, 3428, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_count, __pyx_t_3) < 0) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_chunks = __pyx_t_3;
  __pyx_t_3 = 0;
+3429:         chunks.dtype = 'int32'
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_chunks, __pyx_n_s_dtype, __pyx_n_s_int32) < 0) __PYX_ERR(0, 3429, __pyx_L1_error)
+3430:         chunks.shape = len(self.chunkRenderers), 2
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
  __Pyx_INCREF(__pyx_int_2);
  __Pyx_GIVEREF(__pyx_int_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_2);
  __pyx_t_3 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_chunks, __pyx_n_s_shape, __pyx_t_4) < 0) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3431: 
+3432:         if size:
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_size); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3432, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+3433:             outsideChunks = chunks[:, 0] < ox - 1
  __pyx_slice__543 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__543)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__543);
  __Pyx_GIVEREF(__pyx_slice__543);
/* … */
    __pyx_t_4 = PyObject_GetItem(__pyx_v_chunks, __pyx_tuple__544); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_v_ox, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3433, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_outsideChunks = __pyx_t_6;
    __pyx_t_6 = 0;
  __pyx_tuple__544 = PyTuple_Pack(2, __pyx_slice__543, __pyx_int_0); if (unlikely(!__pyx_tuple__544)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__544);
  __Pyx_GIVEREF(__pyx_tuple__544);
+3434:             outsideChunks |= chunks[:, 0] > ox + size
  __pyx_slice__545 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__545)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__545);
  __Pyx_GIVEREF(__pyx_slice__545);
/* … */
    __pyx_t_6 = PyObject_GetItem(__pyx_v_chunks, __pyx_tuple__546); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = PyNumber_Add(__pyx_v_ox, __pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3434, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_InPlaceOr(__pyx_v_outsideChunks, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_outsideChunks, __pyx_t_3);
    __pyx_t_3 = 0;
  __pyx_tuple__546 = PyTuple_Pack(2, __pyx_slice__545, __pyx_int_0); if (unlikely(!__pyx_tuple__546)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__546);
  __Pyx_GIVEREF(__pyx_tuple__546);
+3435:             outsideChunks |= chunks[:, 1] < oz - 1
  __pyx_slice__547 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__547)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__547);
  __Pyx_GIVEREF(__pyx_slice__547);
/* … */
    __pyx_t_3 = PyObject_GetItem(__pyx_v_chunks, __pyx_tuple__548); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_v_oz, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3435, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_InPlaceOr(__pyx_v_outsideChunks, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF_SET(__pyx_v_outsideChunks, __pyx_t_4);
    __pyx_t_4 = 0;
  __pyx_tuple__548 = PyTuple_Pack(2, __pyx_slice__547, __pyx_int_1); if (unlikely(!__pyx_tuple__548)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__548);
  __Pyx_GIVEREF(__pyx_tuple__548);
+3436:             outsideChunks |= chunks[:, 1] > oz + size
  __pyx_slice__549 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__549)) __PYX_ERR(0, 3436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__549);
  __Pyx_GIVEREF(__pyx_slice__549);
/* … */
    __pyx_t_4 = PyObject_GetItem(__pyx_v_chunks, __pyx_tuple__550); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyNumber_Add(__pyx_v_oz, __pyx_v_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3436, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_InPlaceOr(__pyx_v_outsideChunks, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_outsideChunks, __pyx_t_6);
    __pyx_t_6 = 0;
  __pyx_tuple__550 = PyTuple_Pack(2, __pyx_slice__549, __pyx_int_1); if (unlikely(!__pyx_tuple__550)) __PYX_ERR(0, 3436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__550);
  __Pyx_GIVEREF(__pyx_tuple__550);
+3437:             chunks = chunks[outsideChunks]
    __pyx_t_6 = PyObject_GetItem(__pyx_v_chunks, __pyx_v_outsideChunks); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_chunks, __pyx_t_6);
    __pyx_t_6 = 0;
 3438: 
+3439:         self.discardChunks(chunks)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_chunks); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_v_chunks);
    __Pyx_GIVEREF(__pyx_v_chunks);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_chunks);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 3440: 
+3441:     def discardChunks(self, chunks):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_40discardChunks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_40discardChunks = {"discardChunks", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_40discardChunks, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_40discardChunks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunks = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardChunks (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunks,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("discardChunks", 1, 2, 2, 1); __PYX_ERR(0, 3441, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "discardChunks") < 0)) __PYX_ERR(0, 3441, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunks = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("discardChunks", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3441, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.discardChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_39discardChunks(__pyx_self, __pyx_v_self, __pyx_v_chunks);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_39discardChunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunks) {
  PyObject *__pyx_v_cx = NULL;
  PyObject *__pyx_v_cz = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardChunks", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.MCRenderer.discardChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cx);
  __Pyx_XDECREF(__pyx_v_cz);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1207 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_chunks, __pyx_n_s_cx, __pyx_n_s_cz); if (unlikely(!__pyx_tuple__1207)) __PYX_ERR(0, 3441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1207);
  __Pyx_GIVEREF(__pyx_tuple__1207);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_40discardChunks, 0, __pyx_n_s_MCRenderer_discardChunks, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1208)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_discardChunks, __pyx_t_27) < 0) __PYX_ERR(0, 3441, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1208 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1207, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_discardChunks, 3441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1208)) __PYX_ERR(0, 3441, __pyx_L1_error)
+3442:         for cx, cz in chunks:
  if (likely(PyList_CheckExact(__pyx_v_chunks)) || PyTuple_CheckExact(__pyx_v_chunks)) {
    __pyx_t_1 = __pyx_v_chunks; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_chunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3442, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3442, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3442, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3442, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3442, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3442, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 3442, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3442, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3442, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3442, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3442, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 3442, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3442, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_cx, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_cz, __pyx_t_6);
    __pyx_t_6 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3443:             self.discardChunk(cx, cz)
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardChunk); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_cx);
    __Pyx_GIVEREF(__pyx_v_cx);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_v_cx);
    __Pyx_INCREF(__pyx_v_cz);
    __Pyx_GIVEREF(__pyx_v_cz);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_v_cz);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3444:         self.oldPosition = None  # xxx force reload
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_oldPosition, Py_None) < 0) __PYX_ERR(0, 3444, __pyx_L1_error)
 3445: 
+3446:     def discardChunk(self, cx, cz):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_42discardChunk(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9_renderer_10MCRenderer_41discardChunk[] = " discards the chunk renderer for this chunk and compresses the chunk ";
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_42discardChunk = {"discardChunk", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_42discardChunk, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9_renderer_10MCRenderer_41discardChunk};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_42discardChunk(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_cx = 0;
  PyObject *__pyx_v_cz = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardChunk (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_cx,&__pyx_n_s_cz,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("discardChunk", 1, 3, 3, 1); __PYX_ERR(0, 3446, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("discardChunk", 1, 3, 3, 2); __PYX_ERR(0, 3446, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "discardChunk") < 0)) __PYX_ERR(0, 3446, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_cx = values[1];
    __pyx_v_cz = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("discardChunk", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3446, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.discardChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_41discardChunk(__pyx_self, __pyx_v_self, __pyx_v_cx, __pyx_v_cz);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_41discardChunk(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_cx, PyObject *__pyx_v_cz) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardChunk", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.MCRenderer.discardChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1209 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_cx, __pyx_n_s_cz); if (unlikely(!__pyx_tuple__1209)) __PYX_ERR(0, 3446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1209);
  __Pyx_GIVEREF(__pyx_tuple__1209);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_42discardChunk, 0, __pyx_n_s_MCRenderer_discardChunk, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1210)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_discardChunk, __pyx_t_27) < 0) __PYX_ERR(0, 3446, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1210 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_discardChunk, 3446, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1210)) __PYX_ERR(0, 3446, __pyx_L1_error)
 3447:         " discards the chunk renderer for this chunk and compresses the chunk "
+3448:         if (cx, cz) in self.chunkRenderers:
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_cx);
  __Pyx_GIVEREF(__pyx_v_cx);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_cx);
  __Pyx_INCREF(__pyx_v_cz);
  __Pyx_GIVEREF(__pyx_v_cz);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_cz);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3448, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {
/* … */
  }
+3449:             self.bufferUsage -= self.chunkRenderers[cx, cz].bufferSize
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bufferUsage); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_cx);
    __Pyx_GIVEREF(__pyx_v_cx);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_cx);
    __Pyx_INCREF(__pyx_v_cz);
    __Pyx_GIVEREF(__pyx_v_cz);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_cz);
    __pyx_t_6 = PyObject_GetItem(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_bufferSize); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_bufferUsage, __pyx_t_6) < 0) __PYX_ERR(0, 3449, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+3450:             self.chunkRenderers[cx, cz].forgetDisplayLists()
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_cx);
    __Pyx_GIVEREF(__pyx_v_cx);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_cx);
    __Pyx_INCREF(__pyx_v_cz);
    __Pyx_GIVEREF(__pyx_v_cz);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_cz);
    __pyx_t_1 = PyObject_GetItem(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_forgetDisplayLists); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_1) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3450, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3450, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+3451:             del self.chunkRenderers[cx, cz]
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_cx);
    __Pyx_GIVEREF(__pyx_v_cx);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_cx);
    __Pyx_INCREF(__pyx_v_cz);
    __Pyx_GIVEREF(__pyx_v_cz);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_cz);
    if (unlikely(PyObject_DelItem(__pyx_t_6, __pyx_t_2) < 0)) __PYX_ERR(0, 3451, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3452: 
+3453:     _fastLeaves = False
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_fastLeaves_2, Py_False) < 0) __PYX_ERR(0, 3453, __pyx_L1_error)
 3454: 
+3455:     @property
  __pyx_t_40 = PyTuple_New(1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_40, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_fastLeaves, __pyx_t_27) < 0) __PYX_ERR(0, 3456, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3456:     def fastLeaves(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_44fastLeaves(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_44fastLeaves = {"fastLeaves", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_44fastLeaves, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_44fastLeaves(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fastLeaves (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_43fastLeaves(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_43fastLeaves(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fastLeaves", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.MCRenderer.fastLeaves", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1211 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1211)) __PYX_ERR(0, 3456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1211);
  __Pyx_GIVEREF(__pyx_tuple__1211);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_44fastLeaves, 0, __pyx_n_s_MCRenderer_fastLeaves, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1212)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_codeobj__1212 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1211, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_fastLeaves, 3456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1212)) __PYX_ERR(0, 3456, __pyx_L1_error)
+3457:         return self._fastLeaves
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fastLeaves_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3458: 
+3459:     @fastLeaves.setter
  __pyx_t_40 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_fastLeaves);
  if (unlikely(!__pyx_t_40)) {
    PyErr_Clear();
    __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_fastLeaves);
  }
  if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_37 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_setter); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
+3460:     def fastLeaves(self, val):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_46fastLeaves(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_46fastLeaves = {"fastLeaves", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_46fastLeaves, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_46fastLeaves(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fastLeaves (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_val,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("fastLeaves", 1, 2, 2, 1); __PYX_ERR(0, 3460, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fastLeaves") < 0)) __PYX_ERR(0, 3460, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fastLeaves", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3460, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.fastLeaves", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_45fastLeaves(__pyx_self, __pyx_v_self, __pyx_v_val);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_45fastLeaves(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fastLeaves", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("_renderer.MCRenderer.fastLeaves", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1213 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_val); if (unlikely(!__pyx_tuple__1213)) __PYX_ERR(0, 3460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1213);
  __Pyx_GIVEREF(__pyx_tuple__1213);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_46fastLeaves, 0, __pyx_n_s_MCRenderer_fastLeaves, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1214)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __pyx_t_35 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_37))) {
    __pyx_t_35 = PyMethod_GET_SELF(__pyx_t_37);
    if (likely(__pyx_t_35)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_37);
      __Pyx_INCREF(__pyx_t_35);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_37, function);
    }
  }
  if (!__pyx_t_35) {
    __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_37, __pyx_t_40); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3459, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
    __Pyx_GOTREF(__pyx_t_27);
  } else {
    __pyx_t_39 = PyTuple_New(1+1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_39);
    __Pyx_GIVEREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_35); __pyx_t_35 = NULL;
    __Pyx_GIVEREF(__pyx_t_40);
    PyTuple_SET_ITEM(__pyx_t_39, 0+1, __pyx_t_40);
    __pyx_t_40 = 0;
    __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_37, __pyx_t_39, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  }
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_fastLeaves, __pyx_t_27) < 0) __PYX_ERR(0, 3460, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1214 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1213, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_fastLeaves, 3460, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1214)) __PYX_ERR(0, 3460, __pyx_L1_error)
+3461:         if self._fastLeaves != bool(val):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fastLeaves_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_val); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3461, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3461, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3461, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
/* … */
  }
+3462:             self.discardAllChunks()
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardAllChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_1) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3462, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3462, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3463: 
+3464:         self._fastLeaves = bool(val)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_val); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3464, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fastLeaves_2, __pyx_t_4) < 0) __PYX_ERR(0, 3464, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3465: 
+3466:     _roughGraphics = False
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_roughGraphics_2, Py_False) < 0) __PYX_ERR(0, 3466, __pyx_L1_error)
 3467: 
+3468:     @property
  __pyx_t_37 = PyTuple_New(1); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_37, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_37, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_roughGraphics, __pyx_t_27) < 0) __PYX_ERR(0, 3469, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3469:     def roughGraphics(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_48roughGraphics(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_48roughGraphics = {"roughGraphics", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_48roughGraphics, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_48roughGraphics(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("roughGraphics (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_47roughGraphics(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_47roughGraphics(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("roughGraphics", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.MCRenderer.roughGraphics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1215 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1215)) __PYX_ERR(0, 3469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1215);
  __Pyx_GIVEREF(__pyx_tuple__1215);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_48roughGraphics, 0, __pyx_n_s_MCRenderer_roughGraphics, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1216)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_codeobj__1216 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1215, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_roughGraphics, 3469, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1216)) __PYX_ERR(0, 3469, __pyx_L1_error)
+3470:         return self._roughGraphics
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_roughGraphics_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3471: 
+3472:     @roughGraphics.setter
  __pyx_t_37 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_roughGraphics);
  if (unlikely(!__pyx_t_37)) {
    PyErr_Clear();
    __pyx_t_37 = __Pyx_GetModuleGlobalName(__pyx_n_s_roughGraphics);
  }
  if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_37, __pyx_n_s_setter); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
+3473:     def roughGraphics(self, val):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_50roughGraphics(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_50roughGraphics = {"roughGraphics", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_50roughGraphics, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_50roughGraphics(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("roughGraphics (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_val,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("roughGraphics", 1, 2, 2, 1); __PYX_ERR(0, 3473, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "roughGraphics") < 0)) __PYX_ERR(0, 3473, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("roughGraphics", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3473, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.roughGraphics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_49roughGraphics(__pyx_self, __pyx_v_self, __pyx_v_val);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_49roughGraphics(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("roughGraphics", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("_renderer.MCRenderer.roughGraphics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1217 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_val); if (unlikely(!__pyx_tuple__1217)) __PYX_ERR(0, 3473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1217);
  __Pyx_GIVEREF(__pyx_tuple__1217);
/* … */
  __pyx_t_37 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_50roughGraphics, 0, __pyx_n_s_MCRenderer_roughGraphics, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1218)); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 3473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_37);
  __pyx_t_40 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_39))) {
    __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_39);
    if (likely(__pyx_t_40)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_39);
      __Pyx_INCREF(__pyx_t_40);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_39, function);
    }
  }
  if (!__pyx_t_40) {
    __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_39, __pyx_t_37); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3472, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
    __Pyx_GOTREF(__pyx_t_27);
  } else {
    __pyx_t_35 = PyTuple_New(1+1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_35);
    __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_40); __pyx_t_40 = NULL;
    __Pyx_GIVEREF(__pyx_t_37);
    PyTuple_SET_ITEM(__pyx_t_35, 0+1, __pyx_t_37);
    __pyx_t_37 = 0;
    __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_t_35, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  }
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_roughGraphics, __pyx_t_27) < 0) __PYX_ERR(0, 3473, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1218 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1217, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_roughGraphics, 3473, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1218)) __PYX_ERR(0, 3473, __pyx_L1_error)
+3474:         if self._roughGraphics != bool(val):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_roughGraphics_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_val); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3474, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
/* … */
  }
+3475:             self.discardAllChunks()
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardAllChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_1) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3475, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3475, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3476: 
+3477:         self._roughGraphics = bool(val)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_val); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3477, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_roughGraphics_2, __pyx_t_4) < 0) __PYX_ERR(0, 3477, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3478: 
+3479:     _showHiddenOres = False
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_showHiddenOres_2, Py_False) < 0) __PYX_ERR(0, 3479, __pyx_L1_error)
 3480: 
+3481:     @property
  __pyx_t_39 = PyTuple_New(1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_39, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_showHiddenOres, __pyx_t_27) < 0) __PYX_ERR(0, 3482, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3482:     def showHiddenOres(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_52showHiddenOres(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_52showHiddenOres = {"showHiddenOres", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_52showHiddenOres, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_52showHiddenOres(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("showHiddenOres (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_51showHiddenOres(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_51showHiddenOres(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("showHiddenOres", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("_renderer.MCRenderer.showHiddenOres", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1219 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1219)) __PYX_ERR(0, 3482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1219);
  __Pyx_GIVEREF(__pyx_tuple__1219);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_52showHiddenOres, 0, __pyx_n_s_MCRenderer_showHiddenOres, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1220)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_codeobj__1220 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1219, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_showHiddenOres, 3482, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1220)) __PYX_ERR(0, 3482, __pyx_L1_error)
+3483:         return self._showHiddenOres
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_showHiddenOres_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3484: 
+3485:     @showHiddenOres.setter
  __pyx_t_39 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_showHiddenOres);
  if (unlikely(!__pyx_t_39)) {
    PyErr_Clear();
    __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_showHiddenOres);
  }
  if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_setter); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
+3486:     def showHiddenOres(self, val):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_54showHiddenOres(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_54showHiddenOres = {"showHiddenOres", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_54showHiddenOres, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_54showHiddenOres(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("showHiddenOres (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_val,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("showHiddenOres", 1, 2, 2, 1); __PYX_ERR(0, 3486, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "showHiddenOres") < 0)) __PYX_ERR(0, 3486, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("showHiddenOres", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3486, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.showHiddenOres", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_53showHiddenOres(__pyx_self, __pyx_v_self, __pyx_v_val);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_53showHiddenOres(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("showHiddenOres", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("_renderer.MCRenderer.showHiddenOres", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1221 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_val); if (unlikely(!__pyx_tuple__1221)) __PYX_ERR(0, 3486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1221);
  __Pyx_GIVEREF(__pyx_tuple__1221);
/* … */
  __pyx_t_39 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_54showHiddenOres, 0, __pyx_n_s_MCRenderer_showHiddenOres, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1222)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 3486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_37 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
    __pyx_t_37 = PyMethod_GET_SELF(__pyx_t_35);
    if (likely(__pyx_t_37)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
      __Pyx_INCREF(__pyx_t_37);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_35, function);
    }
  }
  if (!__pyx_t_37) {
    __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_35, __pyx_t_39); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3485, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
    __Pyx_GOTREF(__pyx_t_27);
  } else {
    __pyx_t_40 = PyTuple_New(1+1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    __Pyx_GIVEREF(__pyx_t_37); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_37); __pyx_t_37 = NULL;
    __Pyx_GIVEREF(__pyx_t_39);
    PyTuple_SET_ITEM(__pyx_t_40, 0+1, __pyx_t_39);
    __pyx_t_39 = 0;
    __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_40, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  }
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_showHiddenOres, __pyx_t_27) < 0) __PYX_ERR(0, 3486, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1222 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1221, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_showHiddenOres, 3486, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1222)) __PYX_ERR(0, 3486, __pyx_L1_error)
+3487:         if self._showHiddenOres != bool(val):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_showHiddenOres_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_val); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3487, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3487, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3487, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
/* … */
  }
+3488:             self.discardAllChunks()
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardAllChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3488, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_1) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3488, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3488, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3489: 
+3490:         self._showHiddenOres = bool(val)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_val); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3490, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_showHiddenOres_2, __pyx_t_4) < 0) __PYX_ERR(0, 3490, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3491: 
+3492:     def showOre(self, ore, show):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_56showOre(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_56showOre = {"showOre", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_56showOre, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_56showOre(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_ore = 0;
  PyObject *__pyx_v_show = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("showOre (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_ore,&__pyx_n_s_show,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ore)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("showOre", 1, 3, 3, 1); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_show)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("showOre", 1, 3, 3, 2); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "showOre") < 0)) __PYX_ERR(0, 3492, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_ore = values[1];
    __pyx_v_show = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("showOre", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3492, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.showOre", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_55showOre(__pyx_self, __pyx_v_self, __pyx_v_ore, __pyx_v_show);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_55showOre(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_ore, PyObject *__pyx_v_show) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("showOre", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("_renderer.MCRenderer.showOre", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1223 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_ore, __pyx_n_s_show); if (unlikely(!__pyx_tuple__1223)) __PYX_ERR(0, 3492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1223);
  __Pyx_GIVEREF(__pyx_tuple__1223);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_56showOre, 0, __pyx_n_s_MCRenderer_showOre, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1224)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_showOre, __pyx_t_27) < 0) __PYX_ERR(0, 3492, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1224 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_showOre, 3492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1224)) __PYX_ERR(0, 3492, __pyx_L1_error)
+3493:         ChunkCalculator.hiddenOreMaterials[ore] = ore if show else 1
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_show); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3493, __pyx_L1_error)
  if (__pyx_t_2) {
    __Pyx_INCREF(__pyx_v_ore);
    __pyx_t_1 = __pyx_v_ore;
  } else {
    __Pyx_INCREF(__pyx_int_1);
    __pyx_t_1 = __pyx_int_1;
  }
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_hiddenOreMaterials); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_v_ore, __pyx_t_1) < 0)) __PYX_ERR(0, 3493, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3494:         if self.showHiddenOres:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_showHiddenOres); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3494, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+3495:             self.discardAllChunks()
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardAllChunks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3495, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3495, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3495, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3496: 
+3497:     def invalidateChunk(self, cx, cz, layers=None):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_58invalidateChunk(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9_renderer_10MCRenderer_57invalidateChunk[] = " marks the chunk for regenerating vertex data and display lists ";
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_58invalidateChunk = {"invalidateChunk", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_58invalidateChunk, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9_renderer_10MCRenderer_57invalidateChunk};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_58invalidateChunk(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_cx = 0;
  PyObject *__pyx_v_cz = 0;
  PyObject *__pyx_v_layers = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateChunk (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_cx,&__pyx_n_s_cz,&__pyx_n_s_layers,0};
    PyObject* values[4] = {0,0,0,0};
    values[3] = ((PyObject *)((PyObject *)Py_None));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("invalidateChunk", 0, 3, 4, 1); __PYX_ERR(0, 3497, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("invalidateChunk", 0, 3, 4, 2); __PYX_ERR(0, 3497, __pyx_L3_error)
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_layers);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "invalidateChunk") < 0)) __PYX_ERR(0, 3497, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_cx = values[1];
    __pyx_v_cz = values[2];
    __pyx_v_layers = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("invalidateChunk", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3497, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_57invalidateChunk(__pyx_self, __pyx_v_self, __pyx_v_cx, __pyx_v_cz, __pyx_v_layers);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_57invalidateChunk(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_cx, PyObject *__pyx_v_cz, PyObject *__pyx_v_layers) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateChunk", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1225 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_cx, __pyx_n_s_cz, __pyx_n_s_layers); if (unlikely(!__pyx_tuple__1225)) __PYX_ERR(0, 3497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1225);
  __Pyx_GIVEREF(__pyx_tuple__1225);
  __pyx_codeobj__1226 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_invalidateChunk, 3497, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1226)) __PYX_ERR(0, 3497, __pyx_L1_error)
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_58invalidateChunk, 0, __pyx_n_s_MCRenderer_invalidateChunk, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1226)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_27, __pyx_tuple__1227);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_invalidateChunk, __pyx_t_27) < 0) __PYX_ERR(0, 3497, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_tuple__1227 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__1227)) __PYX_ERR(0, 3497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1227);
  __Pyx_GIVEREF(__pyx_tuple__1227);
 3498:         " marks the chunk for regenerating vertex data and display lists "
+3499:         if (cx, cz) in self.chunkRenderers:
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_cx);
  __Pyx_GIVEREF(__pyx_v_cx);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_cx);
  __Pyx_INCREF(__pyx_v_cz);
  __Pyx_GIVEREF(__pyx_v_cz);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_cz);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3499, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {
/* … */
  }
+3500:             self.chunkRenderers[(cx, cz)].invalidate(layers)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_cx);
    __Pyx_GIVEREF(__pyx_v_cx);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_cx);
    __Pyx_INCREF(__pyx_v_cz);
    __Pyx_GIVEREF(__pyx_v_cz);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_cz);
    __pyx_t_6 = PyObject_GetItem(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_invalidate); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_layers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3500, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3500, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_v_layers);
      __Pyx_GIVEREF(__pyx_v_layers);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_layers);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3500, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3501: 
+3502:             self.invalidChunkQueue.append((cx, cz))  # xxx encapsulate
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_invalidChunkQueue); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_cx);
    __Pyx_GIVEREF(__pyx_v_cx);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_cx);
    __Pyx_INCREF(__pyx_v_cz);
    __Pyx_GIVEREF(__pyx_v_cz);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_cz);
    __pyx_t_7 = __Pyx_PyObject_Append(__pyx_t_2, __pyx_t_5); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3502, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 3503: 
+3504:     def invalidateChunksInBox(self, box, layers=None):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_60invalidateChunksInBox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_60invalidateChunksInBox = {"invalidateChunksInBox", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_60invalidateChunksInBox, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_60invalidateChunksInBox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_box = 0;
  PyObject *__pyx_v_layers = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateChunksInBox (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_box,&__pyx_n_s_layers,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)((PyObject *)Py_None));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_box)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("invalidateChunksInBox", 0, 2, 3, 1); __PYX_ERR(0, 3504, __pyx_L3_error)
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_layers);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "invalidateChunksInBox") < 0)) __PYX_ERR(0, 3504, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_box = values[1];
    __pyx_v_layers = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("invalidateChunksInBox", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3504, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateChunksInBox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_59invalidateChunksInBox(__pyx_self, __pyx_v_self, __pyx_v_box, __pyx_v_layers);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_59invalidateChunksInBox(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_box, PyObject *__pyx_v_layers) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateChunksInBox", 0);
  __Pyx_INCREF(__pyx_v_box);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateChunksInBox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_box);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1228 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_box, __pyx_n_s_layers); if (unlikely(!__pyx_tuple__1228)) __PYX_ERR(0, 3504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1228);
  __Pyx_GIVEREF(__pyx_tuple__1228);
  __pyx_codeobj__1229 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_invalidateChunksInBox, 3504, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1229)) __PYX_ERR(0, 3504, __pyx_L1_error)
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_60invalidateChunksInBox, 0, __pyx_n_s_MCRenderer_invalidateChunksInBox, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1229)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_27, __pyx_tuple__1230);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_invalidateChunksInBox, __pyx_t_27) < 0) __PYX_ERR(0, 3504, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_tuple__1230 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__1230)) __PYX_ERR(0, 3504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1230);
  __Pyx_GIVEREF(__pyx_tuple__1230);
 3505:         # If the box is at the edge of any chunks, expanding by 1 makes sure the neighboring chunk gets redrawn.
+3506:         box = box.expand(1)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_expand); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__551, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_box, __pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__551 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__551)) __PYX_ERR(0, 3506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__551);
  __Pyx_GIVEREF(__pyx_tuple__551);
 3507: 
+3508:         self.invalidateChunks(box.chunkPositions, layers)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_invalidateChunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_chunkPositions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_5 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_layers);
  __Pyx_GIVEREF(__pyx_v_layers);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_layers);
  __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3509: 
+3510:     def invalidateEntitiesInBox(self, box):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_62invalidateEntitiesInBox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_62invalidateEntitiesInBox = {"invalidateEntitiesInBox", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_62invalidateEntitiesInBox, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_62invalidateEntitiesInBox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_box = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateEntitiesInBox (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_box,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_box)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("invalidateEntitiesInBox", 1, 2, 2, 1); __PYX_ERR(0, 3510, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "invalidateEntitiesInBox") < 0)) __PYX_ERR(0, 3510, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_box = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("invalidateEntitiesInBox", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3510, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateEntitiesInBox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_61invalidateEntitiesInBox(__pyx_self, __pyx_v_self, __pyx_v_box);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_61invalidateEntitiesInBox(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_box) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateEntitiesInBox", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateEntitiesInBox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1231 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_box); if (unlikely(!__pyx_tuple__1231)) __PYX_ERR(0, 3510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1231);
  __Pyx_GIVEREF(__pyx_tuple__1231);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_62invalidateEntitiesInBox, 0, __pyx_n_s_MCRenderer_invalidateEntitiesInB, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1232)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_invalidateEntitiesInBox, __pyx_t_27) < 0) __PYX_ERR(0, 3510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1232 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1231, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_invalidateEntitiesInBox, 3510, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1232)) __PYX_ERR(0, 3510, __pyx_L1_error)
+3511:         self.invalidateChunks(box.chunkPositions, [Layer.Entities])
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_invalidateChunks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_chunkPositions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_Entities); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_5);
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3512: 
+3513:     def invalidateTileTicksInBox(self, box):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_64invalidateTileTicksInBox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_64invalidateTileTicksInBox = {"invalidateTileTicksInBox", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_64invalidateTileTicksInBox, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_64invalidateTileTicksInBox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_box = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateTileTicksInBox (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_box,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_box)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("invalidateTileTicksInBox", 1, 2, 2, 1); __PYX_ERR(0, 3513, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "invalidateTileTicksInBox") < 0)) __PYX_ERR(0, 3513, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_box = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("invalidateTileTicksInBox", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3513, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateTileTicksInBox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_63invalidateTileTicksInBox(__pyx_self, __pyx_v_self, __pyx_v_box);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_63invalidateTileTicksInBox(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_box) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateTileTicksInBox", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateTileTicksInBox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1233 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_box); if (unlikely(!__pyx_tuple__1233)) __PYX_ERR(0, 3513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1233);
  __Pyx_GIVEREF(__pyx_tuple__1233);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_64invalidateTileTicksInBox, 0, __pyx_n_s_MCRenderer_invalidateTileTicksIn, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1234)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_invalidateTileTicksInBox, __pyx_t_27) < 0) __PYX_ERR(0, 3513, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1234 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_invalidateTileTicksInBox, 3513, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1234)) __PYX_ERR(0, 3513, __pyx_L1_error)
+3514:         self.invalidateChunks(box.chunkPositions, [Layer.TileTicks])
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_invalidateChunks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_chunkPositions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9_renderer_Layer), __pyx_n_s_TileTicks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__pyx_t_4) {
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_5);
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3515: 
+3516:     def invalidateChunks(self, chunks, layers=None):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_66invalidateChunks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_66invalidateChunks = {"invalidateChunks", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_66invalidateChunks, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_66invalidateChunks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunks = 0;
  PyObject *__pyx_v_layers = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateChunks (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunks,&__pyx_n_s_layers,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)((PyObject *)Py_None));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunks)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("invalidateChunks", 0, 2, 3, 1); __PYX_ERR(0, 3516, __pyx_L3_error)
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_layers);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "invalidateChunks") < 0)) __PYX_ERR(0, 3516, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_chunks = values[1];
    __pyx_v_layers = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("invalidateChunks", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3516, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_65invalidateChunks(__pyx_self, __pyx_v_self, __pyx_v_chunks, __pyx_v_layers);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_65invalidateChunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunks, PyObject *__pyx_v_layers) {
  PyObject *__pyx_v_cx = NULL;
  PyObject *__pyx_v_cz = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateChunks", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cx);
  __Pyx_XDECREF(__pyx_v_cz);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1235 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_chunks, __pyx_n_s_layers, __pyx_n_s_cx, __pyx_n_s_cz); if (unlikely(!__pyx_tuple__1235)) __PYX_ERR(0, 3516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1235);
  __Pyx_GIVEREF(__pyx_tuple__1235);
  __pyx_codeobj__1236 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1235, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_invalidateChunks, 3516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1236)) __PYX_ERR(0, 3516, __pyx_L1_error)
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_66invalidateChunks, 0, __pyx_n_s_MCRenderer_invalidateChunks, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1236)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_27, __pyx_tuple__1237);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_invalidateChunks, __pyx_t_27) < 0) __PYX_ERR(0, 3516, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_tuple__1237 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__1237)) __PYX_ERR(0, 3516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1237);
  __Pyx_GIVEREF(__pyx_tuple__1237);
+3517:         for (cx, cz) in chunks:
  if (likely(PyList_CheckExact(__pyx_v_chunks)) || PyTuple_CheckExact(__pyx_v_chunks)) {
    __pyx_t_1 = __pyx_v_chunks; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_chunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3517, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3517, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3517, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3517, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3517, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 3517, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3517, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3517, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3517, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3517, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 3517, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3517, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_cx, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_cz, __pyx_t_6);
    __pyx_t_6 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3518:             self.invalidateChunk(cx, cz, layers)
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_invalidateChunk); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_cx);
    __Pyx_GIVEREF(__pyx_v_cx);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_v_cx);
    __Pyx_INCREF(__pyx_v_cz);
    __Pyx_GIVEREF(__pyx_v_cz);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_v_cz);
    __Pyx_INCREF(__pyx_v_layers);
    __Pyx_GIVEREF(__pyx_v_layers);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_9, __pyx_v_layers);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3519: 
+3520:         self.stopWork()
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_stopWork); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3520, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3520, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3521:         self.discardMasterList()
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardMasterList); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3521, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3521, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3522:         self.loadNearbyChunks()
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadNearbyChunks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3522, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3522, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3523: 
+3524:     def invalidateAllChunks(self, layers=None):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_68invalidateAllChunks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_68invalidateAllChunks = {"invalidateAllChunks", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_68invalidateAllChunks, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_68invalidateAllChunks(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_layers = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateAllChunks (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_layers,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)((PyObject *)Py_None));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_layers);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "invalidateAllChunks") < 0)) __PYX_ERR(0, 3524, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_layers = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("invalidateAllChunks", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3524, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateAllChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_67invalidateAllChunks(__pyx_self, __pyx_v_self, __pyx_v_layers);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_67invalidateAllChunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_layers) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateAllChunks", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateAllChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1238 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_layers); if (unlikely(!__pyx_tuple__1238)) __PYX_ERR(0, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1238);
  __Pyx_GIVEREF(__pyx_tuple__1238);
  __pyx_codeobj__1239 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1238, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_invalidateAllChunks, 3524, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1239)) __PYX_ERR(0, 3524, __pyx_L1_error)
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_68invalidateAllChunks, 0, __pyx_n_s_MCRenderer_invalidateAllChunks, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1239)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_27, __pyx_tuple__1240);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_invalidateAllChunks, __pyx_t_27) < 0) __PYX_ERR(0, 3524, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_tuple__1240 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__1240)) __PYX_ERR(0, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1240);
  __Pyx_GIVEREF(__pyx_tuple__1240);
+3525:         self.invalidateChunks(self.chunkRenderers.iterkeys(), layers)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_invalidateChunks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_iterkeys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3525, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3525, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_layers);
  __Pyx_GIVEREF(__pyx_v_layers);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_v_layers);
  __pyx_t_3 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3526: 
+3527:     def forgetAllDisplayLists(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_70forgetAllDisplayLists(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_70forgetAllDisplayLists = {"forgetAllDisplayLists", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_70forgetAllDisplayLists, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_70forgetAllDisplayLists(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("forgetAllDisplayLists (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_69forgetAllDisplayLists(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_69forgetAllDisplayLists(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_cr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("forgetAllDisplayLists", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.MCRenderer.forgetAllDisplayLists", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1241 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_cr); if (unlikely(!__pyx_tuple__1241)) __PYX_ERR(0, 3527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1241);
  __Pyx_GIVEREF(__pyx_tuple__1241);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_70forgetAllDisplayLists, 0, __pyx_n_s_MCRenderer_forgetAllDisplayLists, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1242)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_forgetAllDisplayLists, __pyx_t_27) < 0) __PYX_ERR(0, 3527, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1242 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1241, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_forgetAllDisplayLists, 3527, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1242)) __PYX_ERR(0, 3527, __pyx_L1_error)
+3528:         for cr in self.chunkRenderers.itervalues():
  __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (unlikely(__pyx_t_5 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "itervalues");
    __PYX_ERR(0, 3528, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_t_5, 0, __pyx_n_s_itervalues, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, NULL, &__pyx_t_6, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_cr, __pyx_t_6);
    __pyx_t_6 = 0;
+3529:             cr.forgetDisplayLists()
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_cr, __pyx_n_s_forgetDisplayLists); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_8) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3529, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    } else {
      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3529, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3530: 
+3531:     def invalidateMasterList(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_72invalidateMasterList(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_72invalidateMasterList = {"invalidateMasterList", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_72invalidateMasterList, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_72invalidateMasterList(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateMasterList (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_71invalidateMasterList(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_71invalidateMasterList(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateMasterList", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateMasterList", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1243 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1243)) __PYX_ERR(0, 3531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1243);
  __Pyx_GIVEREF(__pyx_tuple__1243);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_72invalidateMasterList, 0, __pyx_n_s_MCRenderer_invalidateMasterList, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1244)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_invalidateMasterList, __pyx_t_27) < 0) __PYX_ERR(0, 3531, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1244 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1243, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_invalidateMasterList, 3531, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1244)) __PYX_ERR(0, 3531, __pyx_L1_error)
+3532:         self.discardMasterList()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardMasterList); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3532, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3532, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3533: 
+3534:     shouldRecreateMasterList = True
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_shouldRecreateMasterList, Py_True) < 0) __PYX_ERR(0, 3534, __pyx_L1_error)
 3535: 
+3536:     def discardMasterList(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_74discardMasterList(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_74discardMasterList = {"discardMasterList", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_74discardMasterList, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_74discardMasterList(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardMasterList (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_73discardMasterList(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_73discardMasterList(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("discardMasterList", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.discardMasterList", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1245 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1245)) __PYX_ERR(0, 3536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1245);
  __Pyx_GIVEREF(__pyx_tuple__1245);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_74discardMasterList, 0, __pyx_n_s_MCRenderer_discardMasterList, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1246)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_discardMasterList, __pyx_t_27) < 0) __PYX_ERR(0, 3536, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1246 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1245, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_discardMasterList, 3536, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1246)) __PYX_ERR(0, 3536, __pyx_L1_error)
+3537:         self.shouldRecreateMasterList = True
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_shouldRecreateMasterList, Py_True) < 0) __PYX_ERR(0, 3537, __pyx_L1_error)
 3538: 
+3539:     @property
  __pyx_t_35 = PyTuple_New(1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_35, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_shouldDrawAll, __pyx_t_27) < 0) __PYX_ERR(0, 3540, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3540:     def shouldDrawAll(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_76shouldDrawAll(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_76shouldDrawAll = {"shouldDrawAll", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_76shouldDrawAll, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_76shouldDrawAll(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shouldDrawAll (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_75shouldDrawAll(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_75shouldDrawAll(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_box = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shouldDrawAll", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_renderer.MCRenderer.shouldDrawAll", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_box);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1247 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_box); if (unlikely(!__pyx_tuple__1247)) __PYX_ERR(0, 3540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1247);
  __Pyx_GIVEREF(__pyx_tuple__1247);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_76shouldDrawAll, 0, __pyx_n_s_MCRenderer_shouldDrawAll, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1248)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_codeobj__1248 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1247, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_shouldDrawAll, 3540, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1248)) __PYX_ERR(0, 3540, __pyx_L1_error)
+3541:         box = self.level.bounds
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_bounds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_box = __pyx_t_2;
  __pyx_t_2 = 0;
+3542:         return self.isPreviewer and box.width + box.length < 256
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isPreviewer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3542, __pyx_L1_error)
  if (__pyx_t_3) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_int_256, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3542, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_2 = __pyx_t_4;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;
 3543: 
+3544:     distanceToChunkReload = 32.0
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_distanceToChunkReload, __pyx_float_32_0) < 0) __PYX_ERR(0, 3544, __pyx_L1_error)
 3545: 
+3546:     def cameraMovedFarEnough(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_78cameraMovedFarEnough(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_78cameraMovedFarEnough = {"cameraMovedFarEnough", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_78cameraMovedFarEnough, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_78cameraMovedFarEnough(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cameraMovedFarEnough (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_77cameraMovedFarEnough(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_77cameraMovedFarEnough(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_cPos = NULL;
  PyObject *__pyx_v_oldPos = NULL;
  PyObject *__pyx_v_cameraDelta = NULL;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_v_y = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cameraMovedFarEnough", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("_renderer.MCRenderer.cameraMovedFarEnough", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cPos);
  __Pyx_XDECREF(__pyx_v_oldPos);
  __Pyx_XDECREF(__pyx_v_cameraDelta);
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1249 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_cPos, __pyx_n_s_oldPos, __pyx_n_s_cameraDelta, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__1249)) __PYX_ERR(0, 3546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1249);
  __Pyx_GIVEREF(__pyx_tuple__1249);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_78cameraMovedFarEnough, 0, __pyx_n_s_MCRenderer_cameraMovedFarEnough, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1250)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_cameraMovedFarEnough, __pyx_t_27) < 0) __PYX_ERR(0, 3546, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1250 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1249, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_cameraMovedFarEnough, 3546, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1250)) __PYX_ERR(0, 3546, __pyx_L1_error)
+3547:         if self.shouldDrawAll:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shouldDrawAll); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+3548:             return False
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
+3549:         if self.oldPosition is None:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_oldPosition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 == Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
  }
+3550:             return True
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;
 3551: 
+3552:         cPos = self.position
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_position); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cPos = __pyx_t_1;
  __pyx_t_1 = 0;
+3553:         oldPos = self.oldPosition
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_oldPosition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_oldPos = __pyx_t_1;
  __pyx_t_1 = 0;
 3554: 
+3555:         cameraDelta = self.distanceToChunkReload
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_distanceToChunkReload); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cameraDelta = __pyx_t_1;
  __pyx_t_1 = 0;
 3556: 
+3557:         return any([abs(x - y) > cameraDelta for x, y in zip(cPos, oldPos)])
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_cPos);
  __Pyx_GIVEREF(__pyx_v_cPos);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_cPos);
  __Pyx_INCREF(__pyx_v_oldPos);
  __Pyx_GIVEREF(__pyx_v_oldPos);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_oldPos);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3557, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3557, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 3557, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3557, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 3557, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3557, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_7(__pyx_t_4);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 3557, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
      PyObject* sequence = __pyx_t_5;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3557, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_8 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_9 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      #else
      __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      #endif
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_10 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
      index = 0; __pyx_t_8 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_8)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(0, 3557, __pyx_L1_error)
      __pyx_t_11 = NULL;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L8_unpacking_done;
      __pyx_L7_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_11 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3557, __pyx_L1_error)
      __pyx_L8_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_8);
    __pyx_t_8 = 0;
    __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_9);
    __pyx_t_9 = 0;
    __pyx_t_5 = PyNumber_Subtract(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3557, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = PyNumber_Absolute(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3557, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_9, __pyx_v_cameraDelta, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3557, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 3557, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_any, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3558: 
+3559:     def loadVisibleChunks(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_80loadVisibleChunks(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_9_renderer_10MCRenderer_79loadVisibleChunks[] = " loads nearby chunks if the camera has moved beyond a certain distance ";
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_80loadVisibleChunks = {"loadVisibleChunks", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_80loadVisibleChunks, METH_O, __pyx_doc_9_renderer_10MCRenderer_79loadVisibleChunks};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_80loadVisibleChunks(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loadVisibleChunks (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_79loadVisibleChunks(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_79loadVisibleChunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loadVisibleChunks", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.MCRenderer.loadVisibleChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1251 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1251)) __PYX_ERR(0, 3559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1251);
  __Pyx_GIVEREF(__pyx_tuple__1251);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_80loadVisibleChunks, 0, __pyx_n_s_MCRenderer_loadVisibleChunks, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1252)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_loadVisibleChunks, __pyx_t_27) < 0) __PYX_ERR(0, 3559, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1252 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1251, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_loadVisibleChunks, 3559, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1252)) __PYX_ERR(0, 3559, __pyx_L1_error)
 3560:         """ loads nearby chunks if the camera has moved beyond a certain distance """
 3561: 
 3562:         # print "loadVisibleChunks"
+3563:         if self.cameraMovedFarEnough():
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cameraMovedFarEnough); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3563, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3563, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3563, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {
/* … */
  }
+3564:             if datetime.now() - self.lastVisibleLoad > timedelta(0, 0.5):
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_now); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3564, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3564, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lastVisibleLoad); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__552, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3564, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3564, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {
/* … */
    }
/* … */
  __pyx_tuple__552 = PyTuple_Pack(2, __pyx_int_0, __pyx_float_0_5); if (unlikely(!__pyx_tuple__552)) __PYX_ERR(0, 3564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__552);
  __Pyx_GIVEREF(__pyx_tuple__552);
+3565:                 self.discardChunksOutsideViewDistance()
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_discardChunksOutsideViewDistance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3565, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (__pyx_t_2) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3565, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else {
        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3565, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3566:                 self.loadNearbyChunks()
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadNearbyChunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (__pyx_t_2) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3566, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else {
        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3566, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 3567: 
+3568:                 self.oldPosition = self.position
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_position); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_oldPosition, __pyx_t_3) < 0) __PYX_ERR(0, 3568, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3569:                 self.lastVisibleLoad = datetime.now()
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_now); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_1) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3569, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else {
        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3569, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lastVisibleLoad, __pyx_t_3) < 0) __PYX_ERR(0, 3569, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 3570: 
+3571:     lastVisibleLoad = datetime.now()
  __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 3571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_35, __pyx_n_s_now); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_t_35 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_40))) {
    __pyx_t_35 = PyMethod_GET_SELF(__pyx_t_40);
    if (likely(__pyx_t_35)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
      __Pyx_INCREF(__pyx_t_35);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_40, function);
    }
  }
  if (__pyx_t_35) {
    __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_40, __pyx_t_35); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3571, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  } else {
    __pyx_t_27 = __Pyx_PyObject_CallNoArg(__pyx_t_40); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3571, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_lastVisibleLoad, __pyx_t_27) < 0) __PYX_ERR(0, 3571, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
 3572: 
+3573:     def loadNearbyChunks(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_82loadNearbyChunks(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_82loadNearbyChunks = {"loadNearbyChunks", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_82loadNearbyChunks, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_82loadNearbyChunks(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loadNearbyChunks (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_81loadNearbyChunks(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_81loadNearbyChunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_cameraPos = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loadNearbyChunks", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.MCRenderer.loadNearbyChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cameraPos);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1253 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_cameraPos); if (unlikely(!__pyx_tuple__1253)) __PYX_ERR(0, 3573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1253);
  __Pyx_GIVEREF(__pyx_tuple__1253);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_82loadNearbyChunks, 0, __pyx_n_s_MCRenderer_loadNearbyChunks, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1254)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_loadNearbyChunks, __pyx_t_27) < 0) __PYX_ERR(0, 3573, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1254 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1253, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_loadNearbyChunks, 3573, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1254)) __PYX_ERR(0, 3573, __pyx_L1_error)
+3574:         if None is self.level:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (Py_None == __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
  }
+3575:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
 3576:         # print "loadNearbyChunks"
+3577:         cameraPos = self.position
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_position); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cameraPos = __pyx_t_1;
  __pyx_t_1 = 0;
 3578: 
+3579:         if self.shouldDrawAll:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shouldDrawAll); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3579, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {
/* … */
    goto __pyx_L4;
  }
+3580:             self.loadAllChunks()
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadAllChunks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3580, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3580, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3581:         else:
 3582:             # subtract self.origin to load nearby chunks correctly for preview renderers
+3583:             self.loadChunksStartingFrom(int(cameraPos[0]) - self.origin[0], int(cameraPos[2]) - self.origin[2])
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadChunksStartingFrom); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_cameraPos, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_origin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyNumber_Subtract(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_cameraPos, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_origin); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyNumber_Subtract(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_7);
    __pyx_t_5 = 0;
    __pyx_t_7 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L4:;
 3584: 
+3585:     def loadAllChunks(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_84loadAllChunks(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_84loadAllChunks = {"loadAllChunks", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_84loadAllChunks, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_84loadAllChunks(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loadAllChunks (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_83loadAllChunks(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_83loadAllChunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_box = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loadAllChunks", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.MCRenderer.loadAllChunks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_box);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1255 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_box); if (unlikely(!__pyx_tuple__1255)) __PYX_ERR(0, 3585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1255);
  __Pyx_GIVEREF(__pyx_tuple__1255);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_84loadAllChunks, 0, __pyx_n_s_MCRenderer_loadAllChunks, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1256)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_loadAllChunks, __pyx_t_27) < 0) __PYX_ERR(0, 3585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1256 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1255, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_loadAllChunks, 3585, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1256)) __PYX_ERR(0, 3585, __pyx_L1_error)
+3586:         box = self.level.bounds
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_bounds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_box = __pyx_t_2;
  __pyx_t_2 = 0;
 3587: 
+3588:         self.loadChunksStartingFrom(box.origin[0] + box.width / 2, box.origin[2] + box.length / 2,
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadChunksStartingFrom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_origin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_width); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_int_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_origin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_int_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+3589:                                     max(box.width, box.length))
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_box, __pyx_n_s_width); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3589, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 3589, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__pyx_t_9) {
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_7 = __pyx_t_6;
  } else {
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_7 = __pyx_t_4;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_10 = 1;
    }
  }
  __pyx_t_4 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_6) {
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_t_5);
  __Pyx_INCREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_t_7);
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3590: 
+3591:     _floorTexture = None
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_floorTexture, Py_None) < 0) __PYX_ERR(0, 3591, __pyx_L1_error)
 3592: 
+3593:     @property
  __pyx_t_40 = PyTuple_New(1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_property, __pyx_t_40, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_floorTexture_2, __pyx_t_27) < 0) __PYX_ERR(0, 3594, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3594:     def floorTexture(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_86floorTexture(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_86floorTexture = {"floorTexture", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_86floorTexture, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_86floorTexture(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("floorTexture (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_85floorTexture(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_85floorTexture(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("floorTexture", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.MCRenderer.floorTexture", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1257 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1257)) __PYX_ERR(0, 3594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1257);
  __Pyx_GIVEREF(__pyx_tuple__1257);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_86floorTexture, 0, __pyx_n_s_MCRenderer_floorTexture, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1258)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_codeobj__1258 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_floorTexture_2, 3594, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1258)) __PYX_ERR(0, 3594, __pyx_L1_error)
+3595:         if self._floorTexture is None:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_floorTexture); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 == Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
  }
+3596:             self._floorTexture = Texture(self.makeFloorTex)
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_Texture); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3596, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_makeFloorTex); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3596, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3596, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_floorTexture, __pyx_t_1) < 0) __PYX_ERR(0, 3596, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3597:         return self._floorTexture
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_floorTexture); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 3598: 
+3599:     @staticmethod
  __pyx_t_40 = PyTuple_New(1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_GIVEREF(__pyx_t_27);
  PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_27);
  __pyx_t_27 = 0;
  __pyx_t_27 = __Pyx_PyObject_Call(__pyx_builtin_staticmethod, __pyx_t_40, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeFloorTex, __pyx_t_27) < 0) __PYX_ERR(0, 3600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+3600:     def makeFloorTex():
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_88makeFloorTex(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_88makeFloorTex = {"makeFloorTex", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_88makeFloorTex, METH_NOARGS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_88makeFloorTex(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeFloorTex (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_87makeFloorTex(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_87makeFloorTex(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_v_color0 = NULL;
  PyObject *__pyx_v_color1 = NULL;
  PyObject *__pyx_v_img = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeFloorTex", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("_renderer.MCRenderer.makeFloorTex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_color0);
  __Pyx_XDECREF(__pyx_v_color1);
  __Pyx_XDECREF(__pyx_v_img);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1259 = PyTuple_Pack(3, __pyx_n_s_color0, __pyx_n_s_color1, __pyx_n_s_img); if (unlikely(!__pyx_tuple__1259)) __PYX_ERR(0, 3600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1259);
  __Pyx_GIVEREF(__pyx_tuple__1259);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_88makeFloorTex, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_MCRenderer_makeFloorTex, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1260)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_codeobj__1260 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1259, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeFloorTex, 3600, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1260)) __PYX_ERR(0, 3600, __pyx_L1_error)
+3601:         color0 = (0xff, 0xff, 0xff, 0x22)
  __Pyx_INCREF(__pyx_tuple__553);
  __pyx_v_color0 = __pyx_tuple__553;
/* … */
  __pyx_tuple__553 = PyTuple_Pack(4, __pyx_int_255, __pyx_int_255, __pyx_int_255, __pyx_int_34); if (unlikely(!__pyx_tuple__553)) __PYX_ERR(0, 3601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__553);
  __Pyx_GIVEREF(__pyx_tuple__553);
+3602:         color1 = (0xff, 0xff, 0xff, 0x44)
  __Pyx_INCREF(__pyx_tuple__554);
  __pyx_v_color1 = __pyx_tuple__554;
/* … */
  __pyx_tuple__554 = PyTuple_Pack(4, __pyx_int_255, __pyx_int_255, __pyx_int_255, __pyx_int_68); if (unlikely(!__pyx_tuple__554)) __PYX_ERR(0, 3602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__554);
  __Pyx_GIVEREF(__pyx_tuple__554);
 3603: 
+3604:         img = numpy.array([color0, color1, color1, color0], dtype='uint8')
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_color0);
  __Pyx_GIVEREF(__pyx_v_color0);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_color0);
  __Pyx_INCREF(__pyx_v_color1);
  __Pyx_GIVEREF(__pyx_v_color1);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_color1);
  __Pyx_INCREF(__pyx_v_color1);
  __Pyx_GIVEREF(__pyx_v_color1);
  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_v_color1);
  __Pyx_INCREF(__pyx_v_color0);
  __Pyx_GIVEREF(__pyx_v_color0);
  PyList_SET_ITEM(__pyx_t_1, 3, __pyx_v_color0);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0) __PYX_ERR(0, 3604, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_img = __pyx_t_4;
  __pyx_t_4 = 0;
 3605: 
+3606:         GL.glTexParameter(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glTexParameter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_TEXTURE_MIN_FILTER); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_NEAREST); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_7 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_6);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3607:         GL.glTexParameter(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glTexParameter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_TEXTURE_MAG_FILTER); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_NEAREST); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_7 = 1;
    }
  }
  __pyx_t_1 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_7, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_7, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_7, __pyx_t_2);
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
  __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3608: 
+3609:         GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, 2, 2, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, img)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glTexImage2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_RGBA); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_RGBA); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_UNSIGNED_BYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  __pyx_t_9 = PyTuple_New(9+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_t_2);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_7, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_2);
  __Pyx_GIVEREF(__pyx_int_2);
  PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_7, __pyx_int_2);
  __Pyx_INCREF(__pyx_int_2);
  __Pyx_GIVEREF(__pyx_int_2);
  PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_7, __pyx_int_2);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_9, 5+__pyx_t_7, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_9, 6+__pyx_t_7, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_9, 7+__pyx_t_7, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_img);
  __Pyx_GIVEREF(__pyx_v_img);
  PyTuple_SET_ITEM(__pyx_t_9, 8+__pyx_t_7, __pyx_v_img);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 3610: 
+3611:     def invalidateChunkMarkers(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_90invalidateChunkMarkers(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_90invalidateChunkMarkers = {"invalidateChunkMarkers", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_90invalidateChunkMarkers, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_90invalidateChunkMarkers(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateChunkMarkers (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_89invalidateChunkMarkers(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_89invalidateChunkMarkers(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invalidateChunkMarkers", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.MCRenderer.invalidateChunkMarkers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1261 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1261)) __PYX_ERR(0, 3611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1261);
  __Pyx_GIVEREF(__pyx_tuple__1261);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_90invalidateChunkMarkers, 0, __pyx_n_s_MCRenderer_invalidateChunkMarker, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1262)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_invalidateChunkMarkers, __pyx_t_27) < 0) __PYX_ERR(0, 3611, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1262 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1261, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_invalidateChunkMarkers, 3611, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1262)) __PYX_ERR(0, 3611, __pyx_L1_error)
+3612:         self.loadableChunkMarkers.invalidate()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadableChunkMarkers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_invalidate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3612, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3612, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3613: 
+3614:     def _drawLoadableChunkMarkers(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_92_drawLoadableChunkMarkers(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_92_drawLoadableChunkMarkers = {"_drawLoadableChunkMarkers", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_92_drawLoadableChunkMarkers, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_92_drawLoadableChunkMarkers(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_drawLoadableChunkMarkers (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_91_drawLoadableChunkMarkers(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_91_drawLoadableChunkMarkers(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_chunkSet = NULL;
  PyObject *__pyx_v_sizedChunks = NULL;
  PyObject *__pyx_v_size = NULL;
  PyObject *__pyx_v_chunks = NULL;
  PyObject *__pyx_v_chunkPosition = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_drawLoadableChunkMarkers", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("_renderer.MCRenderer._drawLoadableChunkMarkers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_chunkSet);
  __Pyx_XDECREF(__pyx_v_sizedChunks);
  __Pyx_XDECREF(__pyx_v_size);
  __Pyx_XDECREF(__pyx_v_chunks);
  __Pyx_XDECREF(__pyx_v_chunkPosition);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1263 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_chunkSet, __pyx_n_s_sizedChunks, __pyx_n_s_size, __pyx_n_s_chunks, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_tuple__1263)) __PYX_ERR(0, 3614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1263);
  __Pyx_GIVEREF(__pyx_tuple__1263);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_92_drawLoadableChunkMarkers, 0, __pyx_n_s_MCRenderer__drawLoadableChunkMar, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1264)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawLoadableChunkMarkers, __pyx_t_27) < 0) __PYX_ERR(0, 3614, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1264 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1263, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_drawLoadableChunkMarkers, 3614, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1264)) __PYX_ERR(0, 3614, __pyx_L1_error)
+3615:         if self.level.chunkCount:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_chunkCount); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
/* … */
  }
+3616:             chunkSet = set(self.level.allChunks)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3616, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_allChunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3616, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3616, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_chunkSet = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
 3617: 
+3618:             sizedChunks = chunkMarkers(chunkSet)
    __pyx_t_2 = __pyx_f_9_renderer_chunkMarkers(__pyx_v_chunkSet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_sizedChunks = __pyx_t_2;
    __pyx_t_2 = 0;
 3619: 
+3620:             GL.glPushAttrib(GL.GL_FOG_BIT)
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glPushAttrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_FOG_BIT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3620, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3620, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3620, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3621:             GL.glDisable(GL.GL_FOG)
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_FOG); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3621, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3621, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3621, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3622: 
+3623:             GL.glEnable(GL.GL_BLEND)
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_BLEND); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3623, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3623, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3623, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3624:             GL.glEnable(GL.GL_POLYGON_OFFSET_FILL)
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_POLYGON_OFFSET_FILL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3624, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3624, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3624, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3625:             GL.glPolygonOffset(DepthOffset.ChunkMarkers, DepthOffset.ChunkMarkers)
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glPolygonOffset); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DepthOffset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ChunkMarkers); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DepthOffset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ChunkMarkers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3626:             GL.glEnable(GL.GL_DEPTH_TEST)
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3626, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3626, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3626, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3626, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3626, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3626, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3626, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3627: 
+3628:             GL.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY)
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3628, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glEnableClientState); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3628, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3628, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_GL_TEXTURE_COORD_ARRAY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3628, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3628, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3628, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3628, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3629:             GL.glEnable(GL.GL_TEXTURE_2D)
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3629, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3629, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3629, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3630:             GL.glColor(1.0, 1.0, 1.0, 1.0)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glColor); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__555, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__555 = PyTuple_Pack(4, __pyx_float_1_0, __pyx_float_1_0, __pyx_float_1_0, __pyx_float_1_0); if (unlikely(!__pyx_tuple__555)) __PYX_ERR(0, 3630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__555);
  __Pyx_GIVEREF(__pyx_tuple__555);
 3631: 
+3632:             self.floorTexture.bind()
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_floorTexture_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_bind); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (__pyx_t_6) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3632, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3632, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3633:             for size, chunks in sizedChunks.iteritems():
    __pyx_t_7 = 0;
    if (unlikely(__pyx_v_sizedChunks == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
      __PYX_ERR(0, 3633, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_dict_iterator(__pyx_v_sizedChunks, 0, __pyx_n_s_iteritems, (&__pyx_t_9), (&__pyx_t_10)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_2);
    __pyx_t_2 = __pyx_t_8;
    __pyx_t_8 = 0;
    while (1) {
      __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_9, &__pyx_t_7, &__pyx_t_8, &__pyx_t_6, NULL, __pyx_t_10);
      if (unlikely(__pyx_t_11 == 0)) break;
      if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 3633, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_size, __pyx_t_8);
      __pyx_t_8 = 0;
      __Pyx_XDECREF_SET(__pyx_v_chunks, __pyx_t_6);
      __pyx_t_6 = 0;
+3634:                 if not len(chunks):
      __pyx_t_12 = PyObject_Length(__pyx_v_chunks); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 3634, __pyx_L1_error)
      __pyx_t_3 = ((!(__pyx_t_12 != 0)) != 0);
      if (__pyx_t_3) {
/* … */
      }
+3635:                     continue
        goto __pyx_L4_continue;
+3636:                 chunks = numpy.array(chunks, dtype='float32')
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_chunks);
      __Pyx_GIVEREF(__pyx_v_chunks);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_chunks);
      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 3636, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF_SET(__pyx_v_chunks, __pyx_t_5);
      __pyx_t_5 = 0;
 3637: 
+3638:                 chunkPosition = numpy.zeros(shape=(chunks.shape[0], 4, 3), dtype='float32')
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunks, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
      __Pyx_INCREF(__pyx_int_4);
      __Pyx_GIVEREF(__pyx_int_4);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_4);
      __Pyx_INCREF(__pyx_int_3);
      __Pyx_GIVEREF(__pyx_int_3);
      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_int_3);
      __pyx_t_8 = 0;
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 3638, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 3638, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_chunkPosition, __pyx_t_6);
      __pyx_t_6 = 0;
+3639:                 chunkPosition[:, :, (0, 2)] = numpy.array(((0, 0), (0, 1), (1, 1), (1, 0)), dtype='float32')
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3639, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3639, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__556 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__556)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__556);
  __Pyx_GIVEREF(__pyx_tuple__556);
  __pyx_tuple__557 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_1); if (unlikely(!__pyx_tuple__557)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__557);
  __Pyx_GIVEREF(__pyx_tuple__557);
  __pyx_tuple__558 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_1); if (unlikely(!__pyx_tuple__558)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__558);
  __Pyx_GIVEREF(__pyx_tuple__558);
  __pyx_tuple__559 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_0); if (unlikely(!__pyx_tuple__559)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__559);
  __Pyx_GIVEREF(__pyx_tuple__559);
  __pyx_tuple__560 = PyTuple_Pack(4, __pyx_tuple__556, __pyx_tuple__557, __pyx_tuple__558, __pyx_tuple__559); if (unlikely(!__pyx_tuple__560)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__560);
  __Pyx_GIVEREF(__pyx_tuple__560);
      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3639, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 3639, __pyx_L1_error)
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__561, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3639, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_tuple__561 = PyTuple_Pack(1, __pyx_tuple__560); if (unlikely(!__pyx_tuple__561)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__561);
  __Pyx_GIVEREF(__pyx_tuple__561);
  __pyx_slice__562 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__562)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__562);
  __Pyx_GIVEREF(__pyx_slice__562);
  __pyx_slice__563 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__563)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__563);
  __Pyx_GIVEREF(__pyx_slice__563);
  __pyx_tuple__564 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_2); if (unlikely(!__pyx_tuple__564)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__564);
  __Pyx_GIVEREF(__pyx_tuple__564);
      if (unlikely(PyObject_SetItem(__pyx_v_chunkPosition, __pyx_tuple__565, __pyx_t_1) < 0)) __PYX_ERR(0, 3639, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__565 = PyTuple_Pack(3, __pyx_slice__562, __pyx_slice__563, __pyx_tuple__564); if (unlikely(!__pyx_tuple__565)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__565);
  __Pyx_GIVEREF(__pyx_tuple__565);
+3640:                 chunkPosition[:, :, (0, 2)] *= size
  __pyx_slice__566 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__566)) __PYX_ERR(0, 3640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__566);
  __Pyx_GIVEREF(__pyx_slice__566);
  __pyx_slice__567 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__567)) __PYX_ERR(0, 3640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__567);
  __Pyx_GIVEREF(__pyx_slice__567);
  __pyx_tuple__568 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_2); if (unlikely(!__pyx_tuple__568)) __PYX_ERR(0, 3640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__568);
  __Pyx_GIVEREF(__pyx_tuple__568);
/* … */
      __Pyx_INCREF(__pyx_tuple__569);
      __pyx_t_13 = __pyx_tuple__569;
      __pyx_t_1 = PyObject_GetItem(__pyx_v_chunkPosition, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3640, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3640, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(PyObject_SetItem(__pyx_v_chunkPosition, __pyx_t_13, __pyx_t_6) < 0)) __PYX_ERR(0, 3640, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_tuple__569 = PyTuple_Pack(3, __pyx_slice__566, __pyx_slice__567, __pyx_tuple__568); if (unlikely(!__pyx_tuple__569)) __PYX_ERR(0, 3640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__569);
  __Pyx_GIVEREF(__pyx_tuple__569);
+3641:                 chunkPosition[:, :, (0, 2)] += chunks[:, numpy.newaxis, :]
  __pyx_slice__570 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__570)) __PYX_ERR(0, 3641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__570);
  __Pyx_GIVEREF(__pyx_slice__570);
  __pyx_slice__571 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__571)) __PYX_ERR(0, 3641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__571);
  __Pyx_GIVEREF(__pyx_slice__571);
  __pyx_tuple__572 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_2); if (unlikely(!__pyx_tuple__572)) __PYX_ERR(0, 3641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__572);
  __Pyx_GIVEREF(__pyx_tuple__572);
/* … */
      __Pyx_INCREF(__pyx_tuple__573);
      __pyx_t_13 = __pyx_tuple__573;
      __pyx_t_6 = PyObject_GetItem(__pyx_v_chunkPosition, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
  __pyx_tuple__573 = PyTuple_Pack(3, __pyx_slice__570, __pyx_slice__571, __pyx_tuple__572); if (unlikely(!__pyx_tuple__573)) __PYX_ERR(0, 3641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__573);
  __Pyx_GIVEREF(__pyx_tuple__573);
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_slice__574 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__574)) __PYX_ERR(0, 3641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__574);
  __Pyx_GIVEREF(__pyx_slice__574);
      __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_slice__574);
      __Pyx_GIVEREF(__pyx_slice__574);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_slice__574);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
      __Pyx_INCREF(__pyx_slice__575);
      __Pyx_GIVEREF(__pyx_slice__575);
      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_slice__575);
      __pyx_t_5 = 0;
      __pyx_t_5 = PyObject_GetItem(__pyx_v_chunks, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(PyObject_SetItem(__pyx_v_chunkPosition, __pyx_t_13, __pyx_t_1) < 0)) __PYX_ERR(0, 3641, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_slice__575 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__575)) __PYX_ERR(0, 3641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__575);
  __Pyx_GIVEREF(__pyx_slice__575);
+3642:                 chunkPosition *= 16
      __pyx_t_1 = PyNumber_InPlaceMultiply(__pyx_v_chunkPosition, __pyx_int_16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3642, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_chunkPosition, __pyx_t_1);
      __pyx_t_1 = 0;
+3643:                 GL.glVertexPointer(3, GL.GL_FLOAT, 0, chunkPosition.ravel())
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3643, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glVertexPointer); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3643, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3643, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3643, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunkPosition, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3643, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_14 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_14) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3643, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      } else {
        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3643, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      __pyx_t_12 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_12 = 1;
        }
      }
      __pyx_t_14 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3643, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_int_3);
      __Pyx_GIVEREF(__pyx_int_3);
      PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_12, __pyx_int_3);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_12, __pyx_t_8);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_12, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_14, 3+__pyx_t_12, __pyx_t_5);
      __pyx_t_8 = 0;
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3643, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3644:                 GL.glTexCoordPointer(2, GL.GL_FLOAT, 0, (chunkPosition[..., (0, 2)] * 16).ravel())
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3644, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glTexCoordPointer); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3644, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3644, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_FLOAT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3644, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_tuple__576 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_2); if (unlikely(!__pyx_tuple__576)) __PYX_ERR(0, 3644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__576);
  __Pyx_GIVEREF(__pyx_tuple__576);
      __pyx_t_8 = PyObject_GetItem(__pyx_v_chunkPosition, __pyx_tuple__577); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3644, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_4 = PyNumber_Multiply(__pyx_t_8, __pyx_int_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3644, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3644, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
        }
      }
      if (__pyx_t_4) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3644, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3644, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = NULL;
      __pyx_t_12 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_14))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_14);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_14, function);
          __pyx_t_12 = 1;
        }
      }
      __pyx_t_4 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3644, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_INCREF(__pyx_int_2);
      __Pyx_GIVEREF(__pyx_int_2);
      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_12, __pyx_int_2);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_12, __pyx_t_5);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_12, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_12, __pyx_t_6);
      __pyx_t_5 = 0;
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3644, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_tuple__577 = PyTuple_Pack(2, Py_Ellipsis, __pyx_tuple__576); if (unlikely(!__pyx_tuple__577)) __PYX_ERR(0, 3644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__577);
  __Pyx_GIVEREF(__pyx_tuple__577);
+3645:                 GL.glDrawArrays(GL.GL_QUADS, 0, len(chunkPosition) * 4)
      __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_glDrawArrays); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_GL_QUADS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_12 = PyObject_Length(__pyx_v_chunkPosition); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 3645, __pyx_L1_error)
      __pyx_t_14 = PyInt_FromSsize_t((__pyx_t_12 * 4)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_5 = NULL;
      __pyx_t_12 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_12 = 1;
        }
      }
      __pyx_t_8 = PyTuple_New(3+__pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_12, __pyx_t_6);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_12, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_t_14);
      PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_12, __pyx_t_14);
      __pyx_t_6 = 0;
      __pyx_t_14 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_L4_continue:;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3646: 
+3647:             GL.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY)
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glDisableClientState); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_TEXTURE_COORD_ARRAY); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3647, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3647, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3647, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3648:             GL.glDisable(GL.GL_TEXTURE_2D)
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3648, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3648, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3648, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3648, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_14))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_14);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_14, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3648, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3648, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3648, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3649:             GL.glDisable(GL.GL_BLEND)
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_GL_BLEND); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_14 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_14)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_14) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3649, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3649, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_14); __pyx_t_14 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3649, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3650:             GL.glDisable(GL.GL_DEPTH_TEST)
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3650, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3650, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3650, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3651:             GL.glDisable(GL.GL_POLYGON_OFFSET_FILL)
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_POLYGON_OFFSET_FILL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_14))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_14);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_14, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3651, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3651, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3651, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3652:             GL.glPopAttrib()
    __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_glPopAttrib); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_14 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_14)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (__pyx_t_14) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3652, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3652, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3653: 
+3654:     def drawLoadableChunkMarkers(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_94drawLoadableChunkMarkers(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_94drawLoadableChunkMarkers = {"drawLoadableChunkMarkers", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_94drawLoadableChunkMarkers, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_94drawLoadableChunkMarkers(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawLoadableChunkMarkers (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_93drawLoadableChunkMarkers(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_93drawLoadableChunkMarkers(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("drawLoadableChunkMarkers", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.MCRenderer.drawLoadableChunkMarkers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1265 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1265)) __PYX_ERR(0, 3654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1265);
  __Pyx_GIVEREF(__pyx_tuple__1265);
/* … */
  __pyx_t_27 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_94drawLoadableChunkMarkers, 0, __pyx_n_s_MCRenderer_drawLoadableChunkMark, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1266)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_drawLoadableChunkMarkers_2, __pyx_t_27) < 0) __PYX_ERR(0, 3654, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_codeobj__1266 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1265, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_drawLoadableChunkMarkers_2, 3654, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1266)) __PYX_ERR(0, 3654, __pyx_L1_error)
+3655:         if not self.isPreviewer or isinstance(self.level, pymclevel.MCInfdevOldLevel):
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isPreviewer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3655, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((!__pyx_t_3) != 0);
  if (!__pyx_t_4) {
  } else {
    __pyx_t_1 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MCInfdevOldLevel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_4 = PyObject_IsInstance(__pyx_t_2, __pyx_t_6); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 3655, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_3 = (__pyx_t_4 != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+3656:             self.loadableChunkMarkers.call(self._drawLoadableChunkMarkers)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_loadableChunkMarkers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_call); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_drawLoadableChunkMarkers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3656, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3656, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3656, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 3657: 
+3658:     needsImmediateRedraw = False
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_needsImmediateRedraw, Py_False) < 0) __PYX_ERR(0, 3658, __pyx_L1_error)
+3659:     viewingFrustum = None
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_viewingFrustum, Py_None) < 0) __PYX_ERR(0, 3659, __pyx_L1_error)
+3660:     if "-debuglists" in sys.argv:
  __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_argv); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_t_44 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_debuglists, __pyx_t_40, Py_EQ)); if (unlikely(__pyx_t_44 < 0)) __PYX_ERR(0, 3660, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_t_45 = (__pyx_t_44 != 0);
  if (__pyx_t_45) {
/* … */
    goto __pyx_L8;
  }
+3661:         def createMasterLists(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_96createMasterLists(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_96createMasterLists = {"createMasterLists", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_96createMasterLists, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_96createMasterLists(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createMasterLists (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_95createMasterLists(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_95createMasterLists(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createMasterLists", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1267 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1267)) __PYX_ERR(0, 3661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1267);
  __Pyx_GIVEREF(__pyx_tuple__1267);
/* … */
    __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_96createMasterLists, 0, __pyx_n_s_MCRenderer_createMasterLists, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1268)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3661, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_createMasterLists, __pyx_t_40) < 0) __PYX_ERR(0, 3661, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1268 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1267, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_createMasterLists, 3661, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1268)) __PYX_ERR(0, 3661, __pyx_L1_error)
 3662:             pass
 3663: 
+3664:         def callMasterLists(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_98callMasterLists(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_98callMasterLists = {"callMasterLists", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_98callMasterLists, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_98callMasterLists(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("callMasterLists (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_97callMasterLists(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_97callMasterLists(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_cr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("callMasterLists", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_renderer.MCRenderer.callMasterLists", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1269 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_cr); if (unlikely(!__pyx_tuple__1269)) __PYX_ERR(0, 3664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1269);
  __Pyx_GIVEREF(__pyx_tuple__1269);
/* … */
    __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_98callMasterLists, 0, __pyx_n_s_MCRenderer_callMasterLists, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1270)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_callMasterLists, __pyx_t_40) < 0) __PYX_ERR(0, 3664, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1270 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1269, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_callMasterLists, 3664, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1270)) __PYX_ERR(0, 3664, __pyx_L1_error)
+3665:             for cr in self.chunkRenderers.itervalues():
  __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (unlikely(__pyx_t_5 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "itervalues");
    __PYX_ERR(0, 3665, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_t_5, 0, __pyx_n_s_itervalues, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, NULL, &__pyx_t_6, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3665, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_cr, __pyx_t_6);
    __pyx_t_6 = 0;
+3666:                 cr.debugDraw()
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_cr, __pyx_n_s_debugDraw); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3666, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_8) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3666, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    } else {
      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3666, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3667:     else:
+3668:         def createMasterLists(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_100createMasterLists(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_100createMasterLists = {"createMasterLists", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_100createMasterLists, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_100createMasterLists(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createMasterLists (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_99createMasterLists(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_99createMasterLists(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_lists = NULL;
  PyObject *__pyx_v_chunkLists = NULL;
  PyObject *__pyx_v_chunksPerFrame = NULL;
  int __pyx_v_shouldRecreateAgain;
  PyObject *__pyx_v_ch = NULL;
  PyObject *__pyx_v_rs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createMasterLists", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("_renderer.MCRenderer.createMasterLists", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_lists);
  __Pyx_XDECREF(__pyx_v_chunkLists);
  __Pyx_XDECREF(__pyx_v_chunksPerFrame);
  __Pyx_XDECREF(__pyx_v_ch);
  __Pyx_XDECREF(__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  /*else*/ {
/* … */
  __pyx_tuple__1271 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_lists, __pyx_n_s_chunkLists, __pyx_n_s_chunksPerFrame, __pyx_n_s_shouldRecreateAgain, __pyx_n_s_ch, __pyx_n_s_rs); if (unlikely(!__pyx_tuple__1271)) __PYX_ERR(0, 3668, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1271);
  __Pyx_GIVEREF(__pyx_tuple__1271);
    __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_100createMasterLists, 0, __pyx_n_s_MCRenderer_createMasterLists, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1272)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3668, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_createMasterLists, __pyx_t_40) < 0) __PYX_ERR(0, 3668, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1272 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1271, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_createMasterLists, 3668, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1272)) __PYX_ERR(0, 3668, __pyx_L1_error)
+3669:             if self.shouldRecreateMasterList:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shouldRecreateMasterList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3669, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+3670:                 lists = {}
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3670, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_lists = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;
+3671:                 chunkLists = defaultdict(list)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_defaultdict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3671, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)(&PyList_Type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3671, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3671, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_INCREF(((PyObject *)(&PyList_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyList_Type)));
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)(&PyList_Type)));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3671, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_chunkLists = __pyx_t_1;
    __pyx_t_1 = 0;
+3672:                 chunksPerFrame = 80
    __Pyx_INCREF(__pyx_int_80);
    __pyx_v_chunksPerFrame = __pyx_int_80;
+3673:                 shouldRecreateAgain = False
    __pyx_v_shouldRecreateAgain = 0;
 3674: 
+3675:                 for ch in self.chunkRenderers.itervalues():
    __pyx_t_6 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3675, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(__pyx_t_3 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "itervalues");
      __PYX_ERR(0, 3675, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_dict_iterator(__pyx_t_3, 0, __pyx_n_s_itervalues, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3675, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_5;
    __pyx_t_5 = 0;
    while (1) {
      __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_7, &__pyx_t_6, NULL, &__pyx_t_5, NULL, __pyx_t_8);
      if (unlikely(__pyx_t_9 == 0)) break;
      if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 3675, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_v_ch, __pyx_t_5);
      __pyx_t_5 = 0;
+3676:                     if chunksPerFrame:
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_chunksPerFrame); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3676, __pyx_L1_error)
      if (__pyx_t_2) {
/* … */
        goto __pyx_L6;
      }
+3677:                         if ch.needsRedisplay:
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ch, __pyx_n_s_needsRedisplay); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (__pyx_t_2) {
/* … */
        }
+3678:                             chunksPerFrame -= 1
          __pyx_t_5 = __Pyx_PyInt_SubtractObjC(__pyx_v_chunksPerFrame, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3678, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF_SET(__pyx_v_chunksPerFrame, __pyx_t_5);
          __pyx_t_5 = 0;
+3679:                         ch.makeDisplayLists()
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_ch, __pyx_n_s_makeDisplayLists); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3679, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        if (__pyx_t_4) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3679, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3679, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 3680:                     else:
+3681:                         shouldRecreateAgain = True
      /*else*/ {
        __pyx_v_shouldRecreateAgain = 1;
      }
      __pyx_L6:;
 3682: 
+3683:                     if ch.renderstateLists:
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ch, __pyx_n_s_renderstateLists); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3683, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3683, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_2) {
/* … */
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3684:                         for rs in ch.renderstateLists:
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ch, __pyx_n_s_renderstateLists); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3684, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
          __pyx_t_3 = __pyx_t_5; __Pyx_INCREF(__pyx_t_3); __pyx_t_10 = 0;
          __pyx_t_11 = NULL;
        } else {
          __pyx_t_10 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3684, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3684, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        for (;;) {
          if (likely(!__pyx_t_11)) {
            if (likely(PyList_CheckExact(__pyx_t_3))) {
              if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_3)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_10); __Pyx_INCREF(__pyx_t_5); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 3684, __pyx_L1_error)
              #else
              __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3684, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              #endif
            } else {
              if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_10); __Pyx_INCREF(__pyx_t_5); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 3684, __pyx_L1_error)
              #else
              __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3684, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              #endif
            }
          } else {
            __pyx_t_5 = __pyx_t_11(__pyx_t_3);
            if (unlikely(!__pyx_t_5)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(0, 3684, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_XDECREF_SET(__pyx_v_rs, __pyx_t_5);
          __pyx_t_5 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3685:                             chunkLists[rs] += ch.renderstateLists[rs]
          __Pyx_INCREF(__pyx_v_rs);
          __pyx_t_5 = __pyx_v_rs;
          __pyx_t_4 = PyObject_GetItem(__pyx_v_chunkLists, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3685, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_ch, __pyx_n_s_renderstateLists); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3685, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = PyObject_GetItem(__pyx_t_12, __pyx_v_rs); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3685, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3685, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (unlikely(PyObject_SetItem(__pyx_v_chunkLists, __pyx_t_5, __pyx_t_12) < 0)) __PYX_ERR(0, 3685, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 3686: 
+3687:                 for rs in chunkLists:
    if (likely(PyList_CheckExact(__pyx_v_chunkLists)) || PyTuple_CheckExact(__pyx_v_chunkLists)) {
      __pyx_t_1 = __pyx_v_chunkLists; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_chunkLists); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3687, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3687, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_11)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 3687, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3687, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 3687, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3687, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_11(__pyx_t_1);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 3687, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_rs, __pyx_t_3);
      __pyx_t_3 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3688:                     if len(chunkLists[rs]):
      __pyx_t_3 = PyObject_GetItem(__pyx_v_chunkLists, __pyx_v_rs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3688, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 3688, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__pyx_t_6 != 0);
      if (__pyx_t_2) {
/* … */
      }
+3689:                         lists[rs] = numpy.array(chunkLists[rs], dtype='uint32').ravel()
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyObject_GetItem(__pyx_v_chunkLists, __pyx_v_rs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_n_s_uint32) < 0) __PYX_ERR(0, 3689, __pyx_L1_error)
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ravel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (__pyx_t_4) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3689, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3689, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(PyDict_SetItem(__pyx_v_lists, __pyx_v_rs, __pyx_t_3) < 0)) __PYX_ERR(0, 3689, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 3690: 
+3691:                 self.masterLists = lists
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masterLists, __pyx_v_lists) < 0) __PYX_ERR(0, 3691, __pyx_L1_error)
+3692:                 self.shouldRecreateMasterList = shouldRecreateAgain
    __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_shouldRecreateAgain); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3692, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_shouldRecreateMasterList, __pyx_t_1) < 0) __PYX_ERR(0, 3692, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3693:                 self.needsImmediateRedraw = shouldRecreateAgain
    __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_shouldRecreateAgain); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_needsImmediateRedraw, __pyx_t_1) < 0) __PYX_ERR(0, 3693, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3694: 
+3695:         def callMasterLists(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_102callMasterLists(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_102callMasterLists = {"callMasterLists", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_102callMasterLists, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_102callMasterLists(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("callMasterLists (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_101callMasterLists(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_101callMasterLists(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_renderstate = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("callMasterLists", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("_renderer.MCRenderer.callMasterLists", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_renderstate);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1273 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_renderstate); if (unlikely(!__pyx_tuple__1273)) __PYX_ERR(0, 3695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1273);
  __Pyx_GIVEREF(__pyx_tuple__1273);
/* … */
    __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_102callMasterLists, 0, __pyx_n_s_MCRenderer_callMasterLists, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1274)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3695, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_40);
    if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_callMasterLists, __pyx_t_40) < 0) __PYX_ERR(0, 3695, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  }
  __pyx_L8:;
  __pyx_codeobj__1274 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1273, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_callMasterLists, 3695, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1274)) __PYX_ERR(0, 3695, __pyx_L1_error)
+3696:             for renderstate in self.chunkCalculator.renderstates:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkCalculator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_renderstates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3696, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3696, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3696, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3696, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3696, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3696, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_4(__pyx_t_1);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 3696, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_renderstate, __pyx_t_2);
    __pyx_t_2 = 0;
/* … */
    __pyx_L3_continue:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3697:                 if renderstate not in self.masterLists:
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_masterLists); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3697, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_v_renderstate, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3697, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = (__pyx_t_5 != 0);
    if (__pyx_t_6) {
/* … */
    }
+3698:                     continue
      goto __pyx_L3_continue;
 3699: 
+3700:                 if self.alpha != 0xff and renderstate is not ChunkCalculator.renderstateLowDetail:
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_alpha); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3700, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_int_255, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3700, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3700, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_5) {
    } else {
      __pyx_t_6 = __pyx_t_5;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3700, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_renderstateLowDetail); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3700, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_5 = (__pyx_v_renderstate != __pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_8 = (__pyx_t_5 != 0);
    __pyx_t_6 = __pyx_t_8;
    __pyx_L7_bool_binop_done:;
    if (__pyx_t_6) {
/* … */
    }
+3701:                     GL.glEnable(GL.GL_BLEND)
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_GL_BLEND); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      if (!__pyx_t_7) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3701, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3701, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __pyx_t_7 = NULL;
        __Pyx_GIVEREF(__pyx_t_10);
        PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_10);
        __pyx_t_10 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3701, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3702:                 renderstate.bind()
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_renderstate, __pyx_n_s_bind); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3702, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_11)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    if (__pyx_t_11) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3702, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3702, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3703: 
+3704:                 GL.glCallLists(self.masterLists[renderstate])
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glCallLists); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_masterLists); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = PyObject_GetItem(__pyx_t_9, __pyx_v_renderstate); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_11, function);
      }
    }
    if (!__pyx_t_9) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3704, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3704, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __pyx_t_9 = NULL;
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_10);
      __pyx_t_10 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3704, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3705: 
+3706:                 renderstate.release()
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_renderstate, __pyx_n_s_release); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3706, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_11))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_11, function);
      }
    }
    if (__pyx_t_7) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3706, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3706, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3707:                 if self.alpha != 0xff and renderstate is not ChunkCalculator.renderstateLowDetail:
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_alpha); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3707, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_11 = PyObject_RichCompare(__pyx_t_2, __pyx_int_255, Py_NE); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3707, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3707, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (__pyx_t_8) {
    } else {
      __pyx_t_6 = __pyx_t_8;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_ChunkCalculator); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3707, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_renderstateLowDetail); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3707, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_8 = (__pyx_v_renderstate != __pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_5 = (__pyx_t_8 != 0);
    __pyx_t_6 = __pyx_t_5;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_6) {
/* … */
    }
+3708:                     GL.glDisable(GL.GL_BLEND)
      __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3708, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3708, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3708, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_GL_BLEND); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3708, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_11 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (!__pyx_t_11) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3708, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3708, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_11); __pyx_t_11 = NULL;
        __Pyx_GIVEREF(__pyx_t_10);
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_10);
        __pyx_t_10 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3708, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3709: 
+3710:     errorLimit = 10
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_errorLimit, __pyx_int_10) < 0) __PYX_ERR(0, 3710, __pyx_L1_error)
 3711: 
+3712:     def draw(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_104draw(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_104draw = {"draw", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_104draw, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_104draw(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("draw (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_103draw(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_103draw(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_dx = NULL;
  PyObject *__pyx_v_dy = NULL;
  PyObject *__pyx_v_dz = NULL;
  PyObject *__pyx_v_offset = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("draw", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("_renderer.MCRenderer.draw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dx);
  __Pyx_XDECREF(__pyx_v_dy);
  __Pyx_XDECREF(__pyx_v_dz);
  __Pyx_XDECREF(__pyx_v_offset);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1275 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_dx, __pyx_n_s_dy, __pyx_n_s_dz, __pyx_n_s_offset, __pyx_n_s_e); if (unlikely(!__pyx_tuple__1275)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1275);
  __Pyx_GIVEREF(__pyx_tuple__1275);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_104draw, 0, __pyx_n_s_MCRenderer_draw, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1276)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_draw_2, __pyx_t_40) < 0) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1276 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1275, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_draw_2, 3712, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1276)) __PYX_ERR(0, 3712, __pyx_L1_error)
+3713:         self.needsRedraw = False
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_needsRedraw, Py_False) < 0) __PYX_ERR(0, 3713, __pyx_L1_error)
+3714:         if not self.level:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {
/* … */
  }
+3715:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
+3716:         if not self.chunkCalculator:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkCalculator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = ((!__pyx_t_3) != 0);
  if (__pyx_t_2) {
/* … */
  }
+3717:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
+3718:         if not self.render:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_render); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {
/* … */
  }
+3719:             return
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
 3720: 
+3721:         if self.level.materials.name in ("Pocket", "Alpha"):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_materials); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Pocket, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3721, __pyx_L1_error)
  if (!__pyx_t_2) {
  } else {
    __pyx_t_3 = __pyx_t_2;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Alpha, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3721, __pyx_L1_error)
  __pyx_t_3 = __pyx_t_2;
  __pyx_L7_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (__pyx_t_3 != 0);
  if (__pyx_t_2) {
/* … */
  }
+3722:             GL.glMatrixMode(GL.GL_TEXTURE)
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glMatrixMode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_TEXTURE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3722, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3722, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3722, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3723:             GL.glScalef(1 / 2., 1 / 2., 1 / 2.)
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glScalef); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyFloat_FromDouble((1.0 / 2.)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyFloat_FromDouble((1.0 / 2.)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = PyFloat_FromDouble((1.0 / 2.)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_9 = 1;
      }
    }
    __pyx_t_10 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_4);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3724: 
+3725:         with gl.glPushMatrix(GL.GL_MODELVIEW):
  /*with:*/ {
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_glPushMatrix); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_GL_MODELVIEW); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_10, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3725, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3725, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3725, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_11 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3725, __pyx_L9_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3725, __pyx_L9_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3725, __pyx_L9_error)
    }
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        goto __pyx_L20_try_end;
        __pyx_L13_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("_renderer.MCRenderer.draw", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(0, 3725, __pyx_L15_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_6 = PyTuple_Pack(3, __pyx_t_7, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3725, __pyx_L15_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3725, __pyx_L15_except_error)
          __Pyx_GOTREF(__pyx_t_18);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_18);
          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(0, 3725, __pyx_L15_except_error)
          __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
          if (__pyx_t_3) {
            __Pyx_GIVEREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_XGIVEREF(__pyx_t_1);
            __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_5, __pyx_t_1);
            __pyx_t_7 = 0; __pyx_t_5 = 0; __pyx_t_1 = 0; 
            __PYX_ERR(0, 3725, __pyx_L15_except_error)
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L14_exception_handled;
        }
        __pyx_L15_except_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
        goto __pyx_L1_error;
        __pyx_L14_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
        __pyx_L20_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_11) {
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__578, NULL);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3725, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        }
        goto __pyx_L12;
      }
      __pyx_L12:;
    }
    goto __pyx_L37;
    __pyx_L9_error:;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    goto __pyx_L1_error;
    __pyx_L37:;
  }
/* … */
  __pyx_tuple__578 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__578)) __PYX_ERR(0, 3725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__578);
  __Pyx_GIVEREF(__pyx_tuple__578);
+3726:             dx, dy, dz = self.origin
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_origin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3726, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_1);
          if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
            PyObject* sequence = __pyx_t_1;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 3)) {
              if (size > 3) __Pyx_RaiseTooManyValuesError(3);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 3726, __pyx_L13_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_10 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
              __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
            } else {
              __pyx_t_10 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
              __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
            }
            __Pyx_INCREF(__pyx_t_10);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_4);
            #else
            __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3726, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3726, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3726, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3726, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext;
            index = 0; __pyx_t_10 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_10)) goto __pyx_L21_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_10);
            index = 1; __pyx_t_6 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L21_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_6);
            index = 2; __pyx_t_4 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L21_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_4);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_7), 3) < 0) __PYX_ERR(0, 3726, __pyx_L13_error)
            __pyx_t_15 = NULL;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            goto __pyx_L22_unpacking_done;
            __pyx_L21_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_15 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 3726, __pyx_L13_error)
            __pyx_L22_unpacking_done:;
          }
          __pyx_v_dx = __pyx_t_10;
          __pyx_t_10 = 0;
          __pyx_v_dy = __pyx_t_6;
          __pyx_t_6 = 0;
          __pyx_v_dz = __pyx_t_4;
          __pyx_t_4 = 0;
+3727:             GL.glTranslate(dx, dy, dz)
          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3727, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glTranslate); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3727, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_4 = NULL;
          __pyx_t_9 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
              __pyx_t_9 = 1;
            }
          }
          __pyx_t_10 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3727, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_10);
          if (__pyx_t_4) {
            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL;
          }
          __Pyx_INCREF(__pyx_v_dx);
          __Pyx_GIVEREF(__pyx_v_dx);
          PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_dx);
          __Pyx_INCREF(__pyx_v_dy);
          __Pyx_GIVEREF(__pyx_v_dy);
          PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_dy);
          __Pyx_INCREF(__pyx_v_dz);
          __Pyx_GIVEREF(__pyx_v_dz);
          PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_v_dz);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3727, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3728: 
+3729:             GL.glEnable(GL.GL_CULL_FACE)
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3729, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3729, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3729, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_CULL_FACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3729, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_10);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_10, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3729, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3729, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_4);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4);
            __pyx_t_4 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3729, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3730:             GL.glEnable(GL.GL_DEPTH_TEST)
          __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3730, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3730, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3730, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3730, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_10 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_10)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_10) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3730, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else {
            __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3730, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10); __pyx_t_10 = NULL;
            __Pyx_GIVEREF(__pyx_t_4);
            PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
            __pyx_t_4 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3730, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3731: 
+3732:             self.level.materials.terrainTexture.bind()
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3732, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_materials); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3732, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_terrainTexture); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3732, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_bind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3732, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (__pyx_t_7) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3732, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          } else {
            __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3732, __pyx_L13_error)
          }
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3733:             GL.glEnable(GL.GL_TEXTURE_2D)
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3733, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3733, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3733, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3733, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3733, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else {
            __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3733, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_4);
            PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_4);
            __pyx_t_4 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3733, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3734:             GL.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY)
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3734, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_glEnableClientState); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3734, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3734, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_GL_TEXTURE_COORD_ARRAY); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3734, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_10, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3734, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else {
            __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3734, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_4);
            PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
            __pyx_t_4 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3734, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3735: 
+3736:             offset = DepthOffset.PreviewRenderer if self.isPreviewer else DepthOffset.Renderer
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isPreviewer); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3736, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3736, __pyx_L13_error)
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_2) {
            __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_DepthOffset); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3736, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_PreviewRenderer); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3736, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __pyx_t_1 = __pyx_t_6;
            __pyx_t_6 = 0;
          } else {
            __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_DepthOffset); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3736, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Renderer); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3736, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_1 = __pyx_t_10;
            __pyx_t_10 = 0;
          }
          __pyx_v_offset = __pyx_t_1;
          __pyx_t_1 = 0;
+3737:             GL.glPolygonOffset(offset, offset)
          __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3737, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_glPolygonOffset); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3737, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_10 = NULL;
          __pyx_t_9 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_10)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
              __pyx_t_9 = 1;
            }
          }
          __pyx_t_4 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3737, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          if (__pyx_t_10) {
            __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL;
          }
          __Pyx_INCREF(__pyx_v_offset);
          __Pyx_GIVEREF(__pyx_v_offset);
          PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, __pyx_v_offset);
          __Pyx_INCREF(__pyx_v_offset);
          __Pyx_GIVEREF(__pyx_v_offset);
          PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, __pyx_v_offset);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3737, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3738:             GL.glEnable(GL.GL_POLYGON_OFFSET_FILL)
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3738, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_glEnable); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3738, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3738, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_GL_POLYGON_OFFSET_FILL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3738, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3738, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3738, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_10);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_10);
            __pyx_t_10 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3738, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3739: 
+3740:             self.createMasterLists()
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_createMasterLists); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3740, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (__pyx_t_7) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3740, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          } else {
            __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3740, __pyx_L13_error)
          }
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3741:             try:
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
            goto __pyx_L30_try_end;
            __pyx_L23_error:;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
            __Pyx_PyThreadState_assign
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            goto __pyx_L13_error;
            __pyx_L24_exception_handled:;
            __Pyx_PyThreadState_assign
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            __pyx_L30_try_end:;
          }
+3742:                 self.callMasterLists()
              __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callMasterLists); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3742, __pyx_L23_error)
              __Pyx_GOTREF(__pyx_t_4);
              __pyx_t_7 = NULL;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_4, function);
                }
              }
              if (__pyx_t_7) {
                __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3742, __pyx_L23_error)
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              } else {
                __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3742, __pyx_L23_error)
              }
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3743: 
+3744:             except GL.GLError as e:
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3744, __pyx_L25_except_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GLError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3744, __pyx_L25_except_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_19 = __Pyx_PyErr_ExceptionMatches(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            if (__pyx_t_19) {
              __Pyx_AddTraceback("_renderer.MCRenderer.draw", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(0, 3744, __pyx_L25_except_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_1);
              __pyx_v_e = __pyx_t_1;
+3745:                 if self.errorLimit:
              __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_errorLimit); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3745, __pyx_L25_except_error)
              __Pyx_GOTREF(__pyx_t_10);
              __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3745, __pyx_L25_except_error)
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (__pyx_t_2) {
/* … */
              }
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L24_exception_handled;
            }
            goto __pyx_L25_except_error;
            __pyx_L25_except_error:;
+3746:                     self.errorLimit -= 1
                __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_errorLimit); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3746, __pyx_L25_except_error)
                __Pyx_GOTREF(__pyx_t_10);
                __pyx_t_6 = __Pyx_PyInt_SubtractObjC(__pyx_t_10, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3746, __pyx_L25_except_error)
                __Pyx_GOTREF(__pyx_t_6);
                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_errorLimit, __pyx_t_6) < 0) __PYX_ERR(0, 3746, __pyx_L25_except_error)
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+3747:                     traceback.print_exc()
                __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_traceback); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3747, __pyx_L25_except_error)
                __Pyx_GOTREF(__pyx_t_10);
                __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_print_exc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3747, __pyx_L25_except_error)
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                __pyx_t_10 = NULL;
                if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
                  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_5);
                  if (likely(__pyx_t_10)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                    __Pyx_INCREF(__pyx_t_10);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_5, function);
                  }
                }
                if (__pyx_t_10) {
                  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3747, __pyx_L25_except_error)
                  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                } else {
                  __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3747, __pyx_L25_except_error)
                }
                __Pyx_GOTREF(__pyx_t_6);
                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+3748:                     print e
                if (__Pyx_PrintOne(0, __pyx_v_e) < 0) __PYX_ERR(0, 3748, __pyx_L25_except_error)
 3749: 
+3750:             GL.glDisable(GL.GL_POLYGON_OFFSET_FILL)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3750, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3750, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3750, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_POLYGON_OFFSET_FILL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3750, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3750, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_7);
          } else {
            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3750, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3750, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 3751: 
+3752:             GL.glDisable(GL.GL_CULL_FACE)
          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3752, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3752, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3752, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_CULL_FACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3752, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_4 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
            }
          }
          if (!__pyx_t_4) {
            __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3752, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_7);
          } else {
            __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3752, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3752, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3753:             GL.glDisable(GL.GL_DEPTH_TEST)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3753, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3753, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3753, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_DEPTH_TEST); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3753, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
            }
          }
          if (!__pyx_t_5) {
            __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3753, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_7);
          } else {
            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3753, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3753, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 3754: 
+3755:             GL.glDisable(GL.GL_TEXTURE_2D)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3755, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glDisable); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3755, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3755, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_TEXTURE_2D); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3755, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3755, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_7);
          } else {
            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3755, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3755, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3756:             GL.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY)
          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3756, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_glDisableClientState); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3756, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3756, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_GL_TEXTURE_COORD_ARRAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3756, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_4 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
            }
          }
          if (!__pyx_t_4) {
            __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3756, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_7);
          } else {
            __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3756, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3756, __pyx_L13_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3757:             self.drawLoadableChunkMarkers()
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_drawLoadableChunkMarkers_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3757, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
            }
          }
          if (__pyx_t_1) {
            __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3757, __pyx_L13_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          } else {
            __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3757, __pyx_L13_error)
          }
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 3758: 
+3759:         if self.level.materials.name in ("Pocket", "Alpha"):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_materials); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Pocket, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3759, __pyx_L1_error)
  if (!__pyx_t_2) {
  } else {
    __pyx_t_3 = __pyx_t_2;
    goto __pyx_L39_bool_binop_done;
  }
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Alpha, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3759, __pyx_L1_error)
  __pyx_t_3 = __pyx_t_2;
  __pyx_L39_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (__pyx_t_3 != 0);
  if (__pyx_t_2) {
/* … */
  }
+3760:             GL.glMatrixMode(GL.GL_TEXTURE)
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_glMatrixMode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_GL_TEXTURE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3760, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3760, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3760, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3761:             GL.glScalef(2., 2., 2.)
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glScalef); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__579, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__579 = PyTuple_Pack(3, __pyx_float_2_, __pyx_float_2_, __pyx_float_2_); if (unlikely(!__pyx_tuple__579)) __PYX_ERR(0, 3761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__579);
  __Pyx_GIVEREF(__pyx_tuple__579);
 3762: 
+3763:     renderErrorHandled = False
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_renderErrorHandled, Py_False) < 0) __PYX_ERR(0, 3763, __pyx_L1_error)
 3764: 
+3765:     def addDebugInfo(self, addDebugString):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_106addDebugInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_106addDebugInfo = {"addDebugInfo", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_106addDebugInfo, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_106addDebugInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_addDebugString = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addDebugInfo (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_addDebugString,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_addDebugString)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("addDebugInfo", 1, 2, 2, 1); __PYX_ERR(0, 3765, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addDebugInfo") < 0)) __PYX_ERR(0, 3765, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_addDebugString = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addDebugInfo", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3765, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.addDebugInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_105addDebugInfo(__pyx_self, __pyx_v_self, __pyx_v_addDebugString);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_105addDebugInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_addDebugString) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addDebugInfo", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.MCRenderer.addDebugInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1277 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_addDebugString); if (unlikely(!__pyx_tuple__1277)) __PYX_ERR(0, 3765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1277);
  __Pyx_GIVEREF(__pyx_tuple__1277);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_106addDebugInfo, 0, __pyx_n_s_MCRenderer_addDebugInfo, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1278)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_addDebugInfo, __pyx_t_40) < 0) __PYX_ERR(0, 3765, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1278 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_addDebugInfo, 3765, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1278)) __PYX_ERR(0, 3765, __pyx_L1_error)
+3766:         addDebugString("BU: {0} MB, ".format(
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_BU_0_MB, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
+3767:             self.bufferUsage / 1000000,
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bufferUsage); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3767, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_int_1000000); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3767, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3766, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_INCREF(__pyx_v_addDebugString);
  __pyx_t_3 = __pyx_v_addDebugString; __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3766, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3768:         ))
 3769: 
+3770:         addDebugString("WQ: {0}, ".format(len(self.invalidChunkQueue)))
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_WQ_0, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_invalidChunkQueue); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3770, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3770, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_v_addDebugString);
  __pyx_t_5 = __pyx_v_addDebugString; __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3770, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3771:         if self.chunkIterator:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkIterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3771, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_8) {
/* … */
  }
+3772:             addDebugString("[LR], ")
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_addDebugString, __pyx_tuple__580, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3772, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__580 = PyTuple_Pack(1, __pyx_kp_s_LR); if (unlikely(!__pyx_tuple__580)) __PYX_ERR(0, 3772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__580);
  __Pyx_GIVEREF(__pyx_tuple__580);
 3773: 
+3774:         addDebugString("CR: {0}, ".format(len(self.chunkRenderers), ))
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_CR_0, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3774, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3774, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_INCREF(__pyx_v_addDebugString);
  __pyx_t_2 = __pyx_v_addDebugString; __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3774, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3775: 
+3776:     def next(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_108next(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_108next = {"next", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_108next, METH_O, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_108next(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("next (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_107next(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_107next(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("next", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_renderer.MCRenderer.next", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_10MCRenderer_111generator34(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1279 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__1279)) __PYX_ERR(0, 3776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1279);
  __Pyx_GIVEREF(__pyx_tuple__1279);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_108next, 0, __pyx_n_s_MCRenderer_next, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1280)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_next, __pyx_t_40) < 0) __PYX_ERR(0, 3776, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1280 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1279, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_next, 3776, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1280)) __PYX_ERR(0, 3776, __pyx_L1_error)
+3777:         self.chunkWorker.next()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkWorker_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_next); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3777, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3777, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3778: 
+3779:     def makeWorkIterator(self):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_110makeWorkIterator(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_9_renderer_10MCRenderer_109makeWorkIterator[] = " does chunk face and vertex calculation work. returns a generator that can be\n        iterated over for smaller work units.";
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_110makeWorkIterator = {"makeWorkIterator", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_110makeWorkIterator, METH_O, __pyx_doc_9_renderer_10MCRenderer_109makeWorkIterator};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_110makeWorkIterator(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeWorkIterator (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_109makeWorkIterator(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_109makeWorkIterator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_43_makeWorkIterator *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("makeWorkIterator", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_43_makeWorkIterator *)__pyx_tp_new_9_renderer___pyx_scope_struct_43_makeWorkIterator(__pyx_ptype_9_renderer___pyx_scope_struct_43_makeWorkIterator, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_10MCRenderer_111generator34, (PyObject *) __pyx_cur_scope, __pyx_n_s_makeWorkIterator, __pyx_n_s_MCRenderer_makeWorkIterator, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 3779, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.makeWorkIterator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_10MCRenderer_111generator34(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3779, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("makeWorkIterator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1281 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_c, __pyx_n_s__633, __pyx_n_s_deadChunk, __pyx_n_s_deadDistance, __pyx_n_s_cr, __pyx_n_s_dist); if (unlikely(!__pyx_tuple__1281)) __PYX_ERR(0, 3779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1281);
  __Pyx_GIVEREF(__pyx_tuple__1281);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_110makeWorkIterator, 0, __pyx_n_s_MCRenderer_makeWorkIterator, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1282)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_makeWorkIterator, __pyx_t_40) < 0) __PYX_ERR(0, 3779, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1282 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1281, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_makeWorkIterator, 3779, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1282)) __PYX_ERR(0, 3779, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_43_makeWorkIterator {
  PyObject_HEAD
  PyObject *__pyx_v__;
  PyObject *__pyx_v_c;
  PyObject *__pyx_v_cr;
  PyObject *__pyx_v_deadChunk;
  PyObject *__pyx_v_deadDistance;
  PyObject *__pyx_v_dist;
  PyObject *__pyx_v_self;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

 3780:         ''' does chunk face and vertex calculation work. returns a generator that can be
 3781:         iterated over for smaller work units.'''
 3782: 
+3783:         try:
  /*try:*/ {
+3784:             while 1:
    while (1) {
+3785:                 if self.level is None:
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3785, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = (__pyx_t_1 == Py_None);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
/* … */
      }
+3786:                     raise StopIteration
        __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
        __PYX_ERR(0, 3786, __pyx_L5_error)
 3787: 
+3788:                 if len(self.invalidChunkQueue) > 1024:
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_invalidChunkQueue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3788, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 3788, __pyx_L5_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = ((__pyx_t_4 > 0x400) != 0);
      if (__pyx_t_3) {
/* … */
      }
+3789:                     self.invalidChunkQueue.clear()
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_invalidChunkQueue); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3789, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_clear); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3789, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (__pyx_t_5) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3789, __pyx_L5_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3789, __pyx_L5_error)
        }
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3790: 
+3791:                 if len(self.invalidChunkQueue):
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_invalidChunkQueue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3791, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 3791, __pyx_L5_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_4 != 0);
      if (__pyx_t_3) {
/* … */
        goto __pyx_L11;
      }
+3792:                     c = self.invalidChunkQueue[0]
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_invalidChunkQueue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3792, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3792, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_c);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_c, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        __pyx_t_6 = 0;
+3793:                     for _ in self.workOnChunk(c):
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_workOnChunk); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3793, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_5) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_cur_scope->__pyx_v_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3793, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3793, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_c);
          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_cur_scope->__pyx_v_c);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3793, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
          __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
          __pyx_t_8 = NULL;
        } else {
          __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3793, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3793, __pyx_L5_error)
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        for (;;) {
          if (likely(!__pyx_t_8)) {
            if (likely(PyList_CheckExact(__pyx_t_1))) {
              if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 3793, __pyx_L5_error)
              #else
              __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3793, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_6);
              #endif
            } else {
              if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 3793, __pyx_L5_error)
              #else
              __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3793, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_6);
              #endif
            }
          } else {
            __pyx_t_6 = __pyx_t_8(__pyx_t_1);
            if (unlikely(!__pyx_t_6)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(0, 3793, __pyx_L5_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_6);
          }
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_6);
          __Pyx_GIVEREF(__pyx_t_6);
          __pyx_t_6 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3794:                         yield
          __pyx_r = Py_None; __Pyx_INCREF(Py_None);
          __Pyx_XGIVEREF(__pyx_t_1);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 1;
          return __pyx_r;
          __pyx_L14_resume_from_yield:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_1);
          __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
          __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3794, __pyx_L5_error)
+3795:                     self.invalidChunkQueue.popleft()
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_invalidChunkQueue); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3795, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_popleft); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3795, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (__pyx_t_6) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3795, __pyx_L5_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3795, __pyx_L5_error)
        }
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3796: 
+3797:                 elif self.chunkIterator is None:
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkIterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3797, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = (__pyx_t_1 == Py_None);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_2 = (__pyx_t_3 != 0);
      if (__pyx_t_2) {
/* … */
      }
+3798:                     raise StopIteration
        __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
        __PYX_ERR(0, 3798, __pyx_L5_error)
 3799: 
 3800:                 else:
+3801:                     c = self.chunkIterator.next()
      /*else*/ {
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkIterator); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3801, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_next); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3801, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (__pyx_t_7) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3801, __pyx_L5_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3801, __pyx_L5_error)
        }
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_c);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_c, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;
+3802:                     if self.vertexBufferLimit:
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexBufferLimit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3802, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3802, __pyx_L5_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (__pyx_t_2) {
/* … */
          goto __pyx_L15;
        }
+3803:                         while self.bufferUsage > (0.9 * (self.vertexBufferLimit << 20)):
          while (1) {
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_bufferUsage); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3803, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_vertexBufferLimit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3803, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_7 = PyNumber_Lshift(__pyx_t_6, __pyx_int_20); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3803, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_6 = PyNumber_Multiply(__pyx_float_0_9, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3803, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3803, __pyx_L5_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3803, __pyx_L5_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (!__pyx_t_2) break;
+3804:                             deadChunk = None
            __Pyx_INCREF(Py_None);
            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_deadChunk);
            __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_deadChunk, Py_None);
            __Pyx_GIVEREF(Py_None);
+3805:                             deadDistance = self.chunkDistance(c)
            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkDistance); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3805, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_1 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_6, function);
              }
            }
            if (!__pyx_t_1) {
              __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_cur_scope->__pyx_v_c); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3805, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_7);
            } else {
              __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3805, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
              __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
              __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_c);
              PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_cur_scope->__pyx_v_c);
              __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3805, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            }
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_deadDistance);
            __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_deadDistance, __pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_7);
            __pyx_t_7 = 0;
+3806:                             for cr in self.chunkRenderers.itervalues():
            __pyx_t_4 = 0;
            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3806, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_6);
            if (unlikely(__pyx_t_6 == Py_None)) {
              PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "itervalues");
              __PYX_ERR(0, 3806, __pyx_L5_error)
            }
            __pyx_t_5 = __Pyx_dict_iterator(__pyx_t_6, 0, __pyx_n_s_itervalues, (&__pyx_t_9), (&__pyx_t_10)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3806, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7);
            __pyx_t_7 = __pyx_t_5;
            __pyx_t_5 = 0;
            while (1) {
              __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_7, __pyx_t_9, &__pyx_t_4, NULL, &__pyx_t_5, NULL, __pyx_t_10);
              if (unlikely(__pyx_t_11 == 0)) break;
              if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 3806, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_cr);
              __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_cr, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_5);
              __pyx_t_5 = 0;
+3807:                                 dist = self.chunkDistance(cr.chunkPosition)
              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkDistance); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3807, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_6);
              __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3807, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = NULL;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
                __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
                if (likely(__pyx_t_12)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                  __Pyx_INCREF(__pyx_t_12);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_6, function);
                }
              }
              if (!__pyx_t_12) {
                __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3807, __pyx_L5_error)
                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                __Pyx_GOTREF(__pyx_t_5);
              } else {
                __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3807, __pyx_L5_error)
                __Pyx_GOTREF(__pyx_t_13);
                __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
                __Pyx_GIVEREF(__pyx_t_1);
                PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_1);
                __pyx_t_1 = 0;
                __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3807, __pyx_L5_error)
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              }
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dist);
              __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dist, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_5);
              __pyx_t_5 = 0;
+3808:                                 if dist > deadDistance:
              __pyx_t_5 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_dist, __pyx_cur_scope->__pyx_v_deadDistance, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3808, __pyx_L5_error)
              __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3808, __pyx_L5_error)
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (__pyx_t_2) {
/* … */
              }
            }
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3809:                                     deadChunk = cr
                __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cr);
                __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_deadChunk);
                __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_deadChunk, __pyx_cur_scope->__pyx_v_cr);
                __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cr);
+3810:                                     deadDistance = dist
                __Pyx_INCREF(__pyx_cur_scope->__pyx_v_dist);
                __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_deadDistance);
                __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_deadDistance, __pyx_cur_scope->__pyx_v_dist);
                __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_dist);
 3811: 
+3812:                             if deadChunk is not None:
            __pyx_t_2 = (__pyx_cur_scope->__pyx_v_deadChunk != Py_None);
            __pyx_t_3 = (__pyx_t_2 != 0);
            if (__pyx_t_3) {
/* … */
              goto __pyx_L21;
            }
+3813:                                 self.discardChunk(*deadChunk.chunkPosition)
              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_discardChunk); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3813, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_deadChunk, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3813, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_6 = PySequence_Tuple(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3813, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3813, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 3814: 
 3815:                             else:
+3816:                                 break
            /*else*/ {
              goto __pyx_L17_break;
            }
            __pyx_L21:;
          }
 3817: 
 3818:                         else:
+3819:                             for _ in self.workOnChunk(c):
          /*else*/ {
            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_workOnChunk); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3819, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_7 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
              __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
              if (likely(__pyx_t_7)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                __Pyx_INCREF(__pyx_t_7);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_6, function);
              }
            }
            if (!__pyx_t_7) {
              __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_cur_scope->__pyx_v_c); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3819, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_5);
            } else {
              __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3819, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_13);
              __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_7); __pyx_t_7 = NULL;
              __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
              __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_c);
              PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_cur_scope->__pyx_v_c);
              __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3819, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            }
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
              __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0;
              __pyx_t_8 = NULL;
            } else {
              __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3819, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_6);
              __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3819, __pyx_L5_error)
            }
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            for (;;) {
              if (likely(!__pyx_t_8)) {
                if (likely(PyList_CheckExact(__pyx_t_6))) {
                  if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break;
                  #if CYTHON_COMPILING_IN_CPYTHON
                  __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 3819, __pyx_L5_error)
                  #else
                  __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3819, __pyx_L5_error)
                  __Pyx_GOTREF(__pyx_t_5);
                  #endif
                } else {
                  if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
                  #if CYTHON_COMPILING_IN_CPYTHON
                  __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 3819, __pyx_L5_error)
                  #else
                  __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3819, __pyx_L5_error)
                  __Pyx_GOTREF(__pyx_t_5);
                  #endif
                }
              } else {
                __pyx_t_5 = __pyx_t_8(__pyx_t_6);
                if (unlikely(!__pyx_t_5)) {
                  PyObject* exc_type = PyErr_Occurred();
                  if (exc_type) {
                    if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                    else __PYX_ERR(0, 3819, __pyx_L5_error)
                  }
                  break;
                }
                __Pyx_GOTREF(__pyx_t_5);
              }
              __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
              __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_5);
              __pyx_t_5 = 0;
/* … */
            }
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
          __pyx_L17_break:;
+3820:                                 yield
              __pyx_r = Py_None; __Pyx_INCREF(Py_None);
              __Pyx_XGIVEREF(__pyx_t_6);
              __pyx_cur_scope->__pyx_t_0 = __pyx_t_6;
              __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
              __pyx_cur_scope->__pyx_t_1 = __pyx_t_9;
              __Pyx_XGIVEREF(__pyx_r);
              __Pyx_RefNannyFinishContext();
              /* return from generator, yielding value */
              __pyx_generator->resume_label = 2;
              return __pyx_r;
              __pyx_L24_resume_from_yield:;
              __pyx_t_6 = __pyx_cur_scope->__pyx_t_0;
              __pyx_cur_scope->__pyx_t_0 = 0;
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
              __pyx_t_9 = __pyx_cur_scope->__pyx_t_1;
              if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3820, __pyx_L5_error)
 3821: 
 3822:                     else:
+3823:                         for _ in self.workOnChunk(c):
        /*else*/ {
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_workOnChunk); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3823, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_13 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_13)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_13);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
            }
          }
          if (!__pyx_t_13) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_cur_scope->__pyx_v_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3823, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_6);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3823, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_13); __pyx_t_13 = NULL;
            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_c);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_cur_scope->__pyx_v_c);
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3823, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
            __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_9 = 0;
            __pyx_t_8 = NULL;
          } else {
            __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3823, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3823, __pyx_L5_error)
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          for (;;) {
            if (likely(!__pyx_t_8)) {
              if (likely(PyList_CheckExact(__pyx_t_5))) {
                if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_5)) break;
                #if CYTHON_COMPILING_IN_CPYTHON
                __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 3823, __pyx_L5_error)
                #else
                __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3823, __pyx_L5_error)
                __Pyx_GOTREF(__pyx_t_6);
                #endif
              } else {
                if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
                #if CYTHON_COMPILING_IN_CPYTHON
                __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 3823, __pyx_L5_error)
                #else
                __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3823, __pyx_L5_error)
                __Pyx_GOTREF(__pyx_t_6);
                #endif
              }
            } else {
              __pyx_t_6 = __pyx_t_8(__pyx_t_5);
              if (unlikely(!__pyx_t_6)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                  else __PYX_ERR(0, 3823, __pyx_L5_error)
                }
                break;
              }
              __Pyx_GOTREF(__pyx_t_6);
            }
            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
            __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_6);
            __pyx_t_6 = 0;
/* … */
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __pyx_L15:;
      }
      __pyx_L11:;
+3824:                             yield
            __pyx_r = Py_None; __Pyx_INCREF(Py_None);
            __Pyx_XGIVEREF(__pyx_t_5);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_5;
            __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_9;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            /* return from generator, yielding value */
            __pyx_generator->resume_label = 3;
            return __pyx_r;
            __pyx_L27_resume_from_yield:;
            __pyx_t_5 = __pyx_cur_scope->__pyx_t_0;
            __pyx_cur_scope->__pyx_t_0 = 0;
            __Pyx_XGOTREF(__pyx_t_5);
            __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
            __pyx_t_9 = __pyx_cur_scope->__pyx_t_1;
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3824, __pyx_L5_error)
 3825: 
+3826:                 yield
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 4;
      return __pyx_r;
      __pyx_L28_resume_from_yield:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3826, __pyx_L5_error)
    }
  }
 3827: 
 3828:         finally:
+3829:             self._chunkWorker = None
  /*finally:*/ {
    /*normal exit:*/{
      if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkWorker, Py_None) < 0) __PYX_ERR(0, 3829, __pyx_L1_error)
/* … */
        if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkWorker, Py_None) < 0) __PYX_ERR(0, 3829, __pyx_L31_error)
+3830:             if self.chunkIterator:
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkIterator); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3830, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3830, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_3) {
/* … */
      }
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __pyx_L5_error:;
      __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
      {
/* … */
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkIterator); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3830, __pyx_L31_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3830, __pyx_L31_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (__pyx_t_3) {
/* … */
        }
      }
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
      }
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
      __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_14;
      goto __pyx_L1_error;
      __pyx_L31_error:;
      __Pyx_PyThreadState_assign
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
      }
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }
+3831:                 self.chunkIterator = None
        if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkIterator, Py_None) < 0) __PYX_ERR(0, 3831, __pyx_L1_error)
/* … */
          if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkIterator, Py_None) < 0) __PYX_ERR(0, 3831, __pyx_L31_error)
 3832: 
+3833:     vertexBufferLimit = 384
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_vertexBufferLimit, __pyx_int_384) < 0) __PYX_ERR(0, 3833, __pyx_L1_error)
 3834: 
+3835:     def getChunkRenderer(self, c):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_113getChunkRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_113getChunkRenderer = {"getChunkRenderer", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_113getChunkRenderer, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_113getChunkRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_c = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getChunkRenderer (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_c,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_c)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("getChunkRenderer", 1, 2, 2, 1); __PYX_ERR(0, 3835, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getChunkRenderer") < 0)) __PYX_ERR(0, 3835, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_c = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getChunkRenderer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3835, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.getChunkRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_112getChunkRenderer(__pyx_self, __pyx_v_self, __pyx_v_c);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_112getChunkRenderer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_c) {
  PyObject *__pyx_v_cr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getChunkRenderer", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_renderer.MCRenderer.getChunkRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_10MCRenderer_116generator35(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1283 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c, __pyx_n_s_cr); if (unlikely(!__pyx_tuple__1283)) __PYX_ERR(0, 3835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1283);
  __Pyx_GIVEREF(__pyx_tuple__1283);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_113getChunkRenderer, 0, __pyx_n_s_MCRenderer_getChunkRenderer, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1284)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_getChunkRenderer, __pyx_t_40) < 0) __PYX_ERR(0, 3835, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1284 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1283, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_getChunkRenderer, 3835, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1284)) __PYX_ERR(0, 3835, __pyx_L1_error)
+3836:         if not (c in self.chunkRenderers):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3836, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_c, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3836, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+3837:             cr = self.chunkClass(self, c)
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkClass); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_self);
    __Pyx_INCREF(__pyx_v_c);
    __Pyx_GIVEREF(__pyx_v_c);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_c);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_cr = __pyx_t_1;
    __pyx_t_1 = 0;
 3838:         else:
+3839:             cr = self.chunkRenderers[c]
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_v_c); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_cr = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L3:;
 3840: 
+3841:         return cr
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_cr);
  __pyx_r = __pyx_v_cr;
  goto __pyx_L0;
 3842: 
+3843:     def calcFacesForChunkRenderer(self, cr):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_115calcFacesForChunkRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_115calcFacesForChunkRenderer = {"calcFacesForChunkRenderer", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_115calcFacesForChunkRenderer, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_115calcFacesForChunkRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_cr = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcFacesForChunkRenderer (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_cr,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("calcFacesForChunkRenderer", 1, 2, 2, 1); __PYX_ERR(0, 3843, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calcFacesForChunkRenderer") < 0)) __PYX_ERR(0, 3843, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_cr = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("calcFacesForChunkRenderer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3843, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.calcFacesForChunkRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_114calcFacesForChunkRenderer(__pyx_self, __pyx_v_self, __pyx_v_cr);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_114calcFacesForChunkRenderer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_cr) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_44_calcFacesForChunkRenderer *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcFacesForChunkRenderer", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_44_calcFacesForChunkRenderer *)__pyx_tp_new_9_renderer___pyx_scope_struct_44_calcFacesForChunkRenderer(__pyx_ptype_9_renderer___pyx_scope_struct_44_calcFacesForChunkRenderer, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_cr = __pyx_v_cr;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cr);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_10MCRenderer_116generator35, (PyObject *) __pyx_cur_scope, __pyx_n_s_calcFacesForChunkRenderer, __pyx_n_s_MCRenderer_calcFacesForChunkRend, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 3843, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.calcFacesForChunkRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_10MCRenderer_116generator35(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3843, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("calcFacesForChunkRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9_renderer_10MCRenderer_119generator36(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_tuple__1285 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_cr, __pyx_n_s_calc, __pyx_n_s_work, __pyx_n_s__633); if (unlikely(!__pyx_tuple__1285)) __PYX_ERR(0, 3843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1285);
  __Pyx_GIVEREF(__pyx_tuple__1285);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_115calcFacesForChunkRenderer, 0, __pyx_n_s_MCRenderer_calcFacesForChunkRend, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1286)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_calcFacesForChunkRenderer, __pyx_t_40) < 0) __PYX_ERR(0, 3843, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1286 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1285, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_calcFacesForChunkRenderer, 3843, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1286)) __PYX_ERR(0, 3843, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_44_calcFacesForChunkRenderer {
  PyObject_HEAD
  PyObject *__pyx_v__;
  PyObject *__pyx_v_calc;
  PyObject *__pyx_v_cr;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_work;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

+3844:         self.bufferUsage -= cr.bufferSize
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_bufferUsage); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_bufferSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_bufferUsage, __pyx_t_3) < 0) __PYX_ERR(0, 3844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 3845: 
+3846:         calc = cr.calcFaces()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cr, __pyx_n_s_calcFaces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_1) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3846, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3846, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_calc = __pyx_t_3;
  __pyx_t_3 = 0;
+3847:         work = 0
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __pyx_cur_scope->__pyx_v_work = __pyx_int_0;
+3848:         for _ in calc:
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_calc)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_calc)) {
    __pyx_t_3 = __pyx_cur_scope->__pyx_v_calc; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_calc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3848, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3848, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 3848, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3848, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 3848, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3848, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 3848, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3849:             yield
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_XGIVEREF(__pyx_t_3);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3849, __pyx_L1_error)
+3850:             work += 1
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_work, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3850, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_work);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_work, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
 3851: 
+3852:         self.chunkDone(cr, work)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_chunkDone); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cr);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cr);
  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_cr);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_work);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_work);
  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_work);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 3853: 
+3854:     def workOnChunk(self, c):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_118workOnChunk(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_118workOnChunk = {"workOnChunk", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_118workOnChunk, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_118workOnChunk(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_c = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("workOnChunk (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_c,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_c)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("workOnChunk", 1, 2, 2, 1); __PYX_ERR(0, 3854, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "workOnChunk") < 0)) __PYX_ERR(0, 3854, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_c = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("workOnChunk", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3854, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.workOnChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_117workOnChunk(__pyx_self, __pyx_v_self, __pyx_v_c);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_117workOnChunk(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_c) {
  struct __pyx_obj_9_renderer___pyx_scope_struct_45_workOnChunk *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("workOnChunk", 0);
  __pyx_cur_scope = (struct __pyx_obj_9_renderer___pyx_scope_struct_45_workOnChunk *)__pyx_tp_new_9_renderer___pyx_scope_struct_45_workOnChunk(__pyx_ptype_9_renderer___pyx_scope_struct_45_workOnChunk, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_c = __pyx_v_c;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_c);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9_renderer_10MCRenderer_119generator36, (PyObject *) __pyx_cur_scope, __pyx_n_s_workOnChunk, __pyx_n_s_MCRenderer_workOnChunk, __pyx_n_s_renderer); if (unlikely(!gen)) __PYX_ERR(0, 3854, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.workOnChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9_renderer_10MCRenderer_119generator36(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3854, __pyx_L1_error)
/* … */
  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("workOnChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1287 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_c, __pyx_n_s_work, __pyx_n_s_cr, __pyx_n_s_faceInfoCalculator, __pyx_n_s__633, __pyx_n_s_e, __pyx_n_s_fn); if (unlikely(!__pyx_tuple__1287)) __PYX_ERR(0, 3854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1287);
  __Pyx_GIVEREF(__pyx_tuple__1287);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_118workOnChunk, 0, __pyx_n_s_MCRenderer_workOnChunk, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1288)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_workOnChunk, __pyx_t_40) < 0) __PYX_ERR(0, 3854, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1288 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1287, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_workOnChunk, 3854, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1288)) __PYX_ERR(0, 3854, __pyx_L1_error)
/* … */
struct __pyx_obj_9_renderer___pyx_scope_struct_45_workOnChunk {
  PyObject_HEAD
  PyObject *__pyx_v__;
  PyObject *__pyx_v_c;
  PyObject *__pyx_v_cr;
  PyObject *__pyx_v_e;
  PyObject *__pyx_v_faceInfoCalculator;
  PyObject *__pyx_v_fn;
  PyObject *__pyx_v_self;
  PyObject *__pyx_v_work;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2;
  PyObject *__pyx_t_3;
  PyObject *__pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
};


+3855:         work = 0
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __pyx_cur_scope->__pyx_v_work = __pyx_int_0;
 3856: 
+3857:         if self.level.containsChunk(*c):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_containsChunk); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PySequence_Tuple(__pyx_cur_scope->__pyx_v_c); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3857, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {
/* … */
  }
+3858:             cr = self.getChunkRenderer(c)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_getChunkRenderer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3858, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_cur_scope->__pyx_v_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3858, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3858, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_c);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_cur_scope->__pyx_v_c);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3858, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_cur_scope->__pyx_v_cr = __pyx_t_3;
    __pyx_t_3 = 0;
+3859:             if self.viewingFrustum:
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_viewingFrustum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3859, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3859, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {
/* … */
    }
+3860:                 if not self.viewingFrustum.visible1([c[0] * 16 + 8, self.level.Height / 2, c[1] * 16 + 8, 1.0],
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_viewingFrustum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_visible1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_c, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_int_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_8, 8, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Height); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_int_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_c, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyNumber_Multiply(__pyx_t_6, __pyx_int_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_7, __pyx_int_8, 8, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_1);
      PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_2);
      PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_6);
      PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_6);
      __Pyx_INCREF(__pyx_float_1_0);
      __Pyx_GIVEREF(__pyx_float_1_0);
      PyList_SET_ITEM(__pyx_t_7, 3, __pyx_float_1_0);
      __pyx_t_1 = 0;
      __pyx_t_2 = 0;
      __pyx_t_6 = 0;
/* … */
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_9 = ((!__pyx_t_4) != 0);
      if (__pyx_t_9) {
/* … */
      }
+3861:                                                     self.level.Height / 2):
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_level); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3861, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Height); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3861, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_int_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3861, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      __pyx_t_1 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (__pyx_t_2) {
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_8, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_8, __pyx_t_6);
      __pyx_t_7 = 0;
      __pyx_t_6 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3862:                     raise StopIteration
        __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
        __PYX_ERR(0, 3862, __pyx_L1_error)
 3863: 
+3864:             faceInfoCalculator = self.calcFacesForChunkRenderer(cr)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_calcFacesForChunkRenderer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3864, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_cur_scope->__pyx_v_cr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3864, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3864, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cr);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cr);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_cur_scope->__pyx_v_cr);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3864, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_cur_scope->__pyx_v_faceInfoCalculator = __pyx_t_3;
    __pyx_t_3 = 0;
+3865:             try:
    {
      /*try:*/ {
/* … */
      }
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      goto __pyx_L14_try_end;
      __pyx_L7_error:;
      __Pyx_PyThreadState_assign
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      goto __pyx_L1_error;
      __pyx_L8_exception_handled:;
      __Pyx_PyThreadState_assign
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_L14_try_end:;
    }
+3866:                 for _ in faceInfoCalculator:
        if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_faceInfoCalculator)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_faceInfoCalculator)) {
          __pyx_t_3 = __pyx_cur_scope->__pyx_v_faceInfoCalculator; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
          __pyx_t_13 = NULL;
        } else {
          __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_faceInfoCalculator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3866, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_13 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3866, __pyx_L7_error)
        }
        for (;;) {
          if (likely(!__pyx_t_13)) {
            if (likely(PyList_CheckExact(__pyx_t_3))) {
              if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 3866, __pyx_L7_error)
              #else
              __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3866, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_5);
              #endif
            } else {
              if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 3866, __pyx_L7_error)
              #else
              __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3866, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_5);
              #endif
            }
          } else {
            __pyx_t_5 = __pyx_t_13(__pyx_t_3);
            if (unlikely(!__pyx_t_5)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(0, 3866, __pyx_L7_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v__, __pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_5);
          __pyx_t_5 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3867:                     work += 1
          __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_cur_scope->__pyx_v_work, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3867, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_work);
          __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_work, __pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_5);
          __pyx_t_5 = 0;
+3868:                     if (work % MCRenderer.workFactor) == 0:
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_MCRenderer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3868, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_workFactor); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3868, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = PyNumber_Remainder(__pyx_cur_scope->__pyx_v_work, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3868, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3868, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 3868, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (__pyx_t_9) {
/* … */
          }
+3869:                         yield
            __pyx_r = Py_None; __Pyx_INCREF(Py_None);
            __Pyx_XGIVEREF(__pyx_t_3);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_8;
            __Pyx_XGIVEREF(__pyx_t_10);
            __pyx_cur_scope->__pyx_t_2 = __pyx_t_10;
            __Pyx_XGIVEREF(__pyx_t_11);
            __pyx_cur_scope->__pyx_t_3 = __pyx_t_11;
            __Pyx_XGIVEREF(__pyx_t_12);
            __pyx_cur_scope->__pyx_t_4 = __pyx_t_12;
            __pyx_cur_scope->__pyx_t_5 = __pyx_t_13;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            /* return from generator, yielding value */
            __pyx_generator->resume_label = 1;
            return __pyx_r;
            __pyx_L18_resume_from_yield:;
            __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
            __pyx_cur_scope->__pyx_t_0 = 0;
            __Pyx_XGOTREF(__pyx_t_3);
            __pyx_t_8 = __pyx_cur_scope->__pyx_t_1;
            __pyx_t_10 = __pyx_cur_scope->__pyx_t_2;
            __pyx_cur_scope->__pyx_t_2 = 0;
            __Pyx_XGOTREF(__pyx_t_10);
            __pyx_t_11 = __pyx_cur_scope->__pyx_t_3;
            __pyx_cur_scope->__pyx_t_3 = 0;
            __Pyx_XGOTREF(__pyx_t_11);
            __pyx_t_12 = __pyx_cur_scope->__pyx_t_4;
            __pyx_cur_scope->__pyx_t_4 = 0;
            __Pyx_XGOTREF(__pyx_t_12);
            __pyx_t_13 = __pyx_cur_scope->__pyx_t_5;
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3869, __pyx_L7_error)
 3870: 
+3871:                 self.invalidateMasterList()
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self, __pyx_n_s_invalidateMasterList); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3871, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (__pyx_t_5) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3871, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        } else {
          __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3871, __pyx_L7_error)
        }
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 3872: 
+3873:             except Exception, e:
      __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
      if (__pyx_t_14) {
        __Pyx_AddTraceback("_renderer.MCRenderer.workOnChunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(0, 3873, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_v_e = __pyx_t_6;
+3874:                 traceback.print_exc()
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_traceback); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3874, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_print_exc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3874, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_2, function);
          }
        }
        if (__pyx_t_7) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3874, __pyx_L9_except_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3874, __pyx_L9_except_error)
        }
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3875:                 fn = c
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_c);
        __pyx_cur_scope->__pyx_v_fn = __pyx_cur_scope->__pyx_v_c;
 3876: 
+3877:                 logging.info(u"Skipped chunk {f}: {e}".format(e=e, f=fn))
        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3877, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3877, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Skipped_chunk_f_e, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3877, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_15 = PyDict_New(); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3877, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_15);
        if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_e, __pyx_cur_scope->__pyx_v_e) < 0) __PYX_ERR(0, 3877, __pyx_L9_except_error)
        if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_f, __pyx_cur_scope->__pyx_v_fn) < 0) __PYX_ERR(0, 3877, __pyx_L9_except_error)
        __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3877, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_16);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __pyx_t_15 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_15)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_15);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_15) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3877, __pyx_L9_except_error)
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3877, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_15); __pyx_t_15 = NULL;
          __Pyx_GIVEREF(__pyx_t_16);
          PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_16);
          __pyx_t_16 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3877, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L8_exception_handled;
      }
      goto __pyx_L9_except_error;
      __pyx_L9_except_error:;
 3878: 
+3879:     redrawChunks = 0
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_redrawChunks, __pyx_int_0) < 0) __PYX_ERR(0, 3879, __pyx_L1_error)
 3880: 
+3881:     def chunkDone(self, chunkRenderer, work):
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10MCRenderer_121chunkDone(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10MCRenderer_121chunkDone = {"chunkDone", (PyCFunction)__pyx_pw_9_renderer_10MCRenderer_121chunkDone, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10MCRenderer_121chunkDone(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_chunkRenderer = 0;
  PyObject *__pyx_v_work = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("chunkDone (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_chunkRenderer,&__pyx_n_s_work,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunkRenderer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("chunkDone", 1, 3, 3, 1); __PYX_ERR(0, 3881, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("chunkDone", 1, 3, 3, 2); __PYX_ERR(0, 3881, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "chunkDone") < 0)) __PYX_ERR(0, 3881, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_chunkRenderer = values[1];
    __pyx_v_work = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("chunkDone", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3881, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("_renderer.MCRenderer.chunkDone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9_renderer_10MCRenderer_120chunkDone(__pyx_self, __pyx_v_self, __pyx_v_chunkRenderer, __pyx_v_work);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9_renderer_10MCRenderer_120chunkDone(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_chunkRenderer, PyObject *__pyx_v_work) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("chunkDone", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("_renderer.MCRenderer.chunkDone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1289 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_chunkRenderer, __pyx_n_s_work); if (unlikely(!__pyx_tuple__1289)) __PYX_ERR(0, 3881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1289);
  __Pyx_GIVEREF(__pyx_tuple__1289);
/* … */
  __pyx_t_40 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10MCRenderer_121chunkDone, 0, __pyx_n_s_MCRenderer_chunkDone, NULL, __pyx_n_s_renderer, __pyx_d, ((PyObject *)__pyx_codeobj__1290)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_chunkDone, __pyx_t_40) < 0) __PYX_ERR(0, 3881, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __pyx_codeobj__1290 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1289, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_chunkDone, 3881, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1290)) __PYX_ERR(0, 3881, __pyx_L1_error)
+3882:         self.chunkRenderers[chunkRenderer.chunkPosition] = chunkRenderer
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunkRenderer, __pyx_n_s_chunkPosition); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_2, __pyx_v_chunkRenderer) < 0)) __PYX_ERR(0, 3882, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3883:         self.bufferUsage += chunkRenderer.bufferSize
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bufferUsage); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunkRenderer, __pyx_n_s_bufferSize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_bufferUsage, __pyx_t_3) < 0) __PYX_ERR(0, 3883, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 3884:         # print "Chunk {0} used {1} work units".format(chunkRenderer.chunkPosition, work)
+3885:         if not self.needsRedraw:
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_needsRedraw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3885, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = ((!__pyx_t_4) != 0);
  if (__pyx_t_5) {
/* … */
  }
+3886:             if self.redrawChunks:
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_redrawChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3886, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_5) {
/* … */
      goto __pyx_L4;
    }
+3887:                 self.redrawChunks -= 1
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_redrawChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3887, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3887, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_redrawChunks, __pyx_t_1) < 0) __PYX_ERR(0, 3887, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3888:                 if not self.redrawChunks:
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_redrawChunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3888, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = ((!__pyx_t_5) != 0);
      if (__pyx_t_4) {
/* … */
      }
+3889:                     self.needsRedraw = True
        if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_needsRedraw, Py_True) < 0) __PYX_ERR(0, 3889, __pyx_L1_error)
 3890: 
 3891:             else:
+3892:                 self.redrawChunks = 2
    /*else*/ {
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_redrawChunks, __pyx_int_2) < 0) __PYX_ERR(0, 3892, __pyx_L1_error)
    }
    __pyx_L4:;
 3893: 
+3894:         if work > 0:
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_work, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3894, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3894, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {
/* … */
  }
+3895:             self.oldChunkStartTime = self.chunkStartTime
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkStartTime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3895, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_oldChunkStartTime, __pyx_t_1) < 0) __PYX_ERR(0, 3895, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3896:             self.chunkStartTime = datetime.now()
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_now); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3896, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3896, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_chunkStartTime, __pyx_t_1) < 0) __PYX_ERR(0, 3896, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3897:             self.chunkSamples.pop(0)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkSamples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3897, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_PopIndex(__pyx_t_1, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3897, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3898:             self.chunkSamples.append(self.chunkStartTime - self.oldChunkStartTime)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkSamples); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_chunkStartTime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_oldChunkStartTime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyNumber_Subtract(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __Pyx_PyObject_Append(__pyx_t_2, __pyx_t_6); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3898, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 3899: 
 3900: 
+3901: class PreviewRenderer(MCRenderer):
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MCRenderer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_PreviewRenderer, __pyx_n_s_PreviewRenderer, (PyObject *) NULL, __pyx_n_s_renderer, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
/* … */
  __pyx_t_40 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PreviewRenderer, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 3901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PreviewRenderer, __pyx_t_40) < 0) __PYX_ERR(0, 3901, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3902:     isPreviewer = True
  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_isPreviewer, Py_True) < 0) __PYX_ERR(0, 3902, __pyx_L1_error)
 3903: 
 3904: 
+3905: def rendermain():
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_5rendermain(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_5rendermain = {"rendermain", (PyCFunction)__pyx_pw_9_renderer_5rendermain, METH_NOARGS, 0};
static PyObject *__pyx_pw_9_renderer_5rendermain(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rendermain (wrapper)", 0);
  __pyx_r = __pyx_pf_9_renderer_4rendermain(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_9_renderer_4rendermain(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_v_renderer = NULL;
  PyObject *__pyx_v_start = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_v_duration = NULL;
  PyObject *__pyx_v_perchunk = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_GLDisplayContext = NULL;
  PyObject *__pyx_v_GLU = NULL;
  PyObject *__pyx_v_pygame = NULL;
  PyObject *__pyx_v_h = NULL;
  PyObject *__pyx_v_pos = NULL;
  PyObject *__pyx_v_look = NULL;
  PyObject *__pyx_v_up = NULL;
  PyObject *__pyx_v_framestart = NULL;
  PyObject *__pyx_v_frames = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_delta = NULL;
  PyObject *__pyx_v_seconds = NULL;
  PyObject *__pyx_v_evt = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rendermain", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("_renderer.rendermain", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_renderer);
  __Pyx_XDECREF(__pyx_v_start);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_duration);
  __Pyx_XDECREF(__pyx_v_perchunk);
  __Pyx_XDECREF(__pyx_v_GLDisplayContext);
  __Pyx_XDECREF(__pyx_v_GLU);
  __Pyx_XDECREF(__pyx_v_pygame);
  __Pyx_XDECREF(__pyx_v_h);
  __Pyx_XDECREF(__pyx_v_pos);
  __Pyx_XDECREF(__pyx_v_look);
  __Pyx_XDECREF(__pyx_v_up);
  __Pyx_XDECREF(__pyx_v_framestart);
  __Pyx_XDECREF(__pyx_v_frames);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_delta);
  __Pyx_XDECREF(__pyx_v_seconds);
  __Pyx_XDECREF(__pyx_v_evt);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__1291 = PyTuple_Pack(18, __pyx_n_s_renderer_2, __pyx_n_s_start, __pyx_n_s_e, __pyx_n_s_duration, __pyx_n_s_perchunk, __pyx_n_s_GLDisplayContext, __pyx_n_s_GLU, __pyx_n_s_pygame, __pyx_n_s_h, __pyx_n_s_pos, __pyx_n_s_look, __pyx_n_s_up, __pyx_n_s_framestart, __pyx_n_s_frames, __pyx_n_s_i, __pyx_n_s_delta, __pyx_n_s_seconds, __pyx_n_s_evt); if (unlikely(!__pyx_tuple__1291)) __PYX_ERR(0, 3905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1291);
  __Pyx_GIVEREF(__pyx_tuple__1291);
/* … */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9_renderer_5rendermain, NULL, __pyx_n_s_renderer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_rendermain, __pyx_t_1) < 0) __PYX_ERR(0, 3905, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_codeobj__1292 = (PyObject*)__Pyx_PyCode_New(0, 0, 18, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1291, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_Jonathan_PycharmProjects, __pyx_n_s_rendermain, 3905, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1292)) __PYX_ERR(0, 3905, __pyx_L1_error)
+3906:     renderer = MCRenderer()
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MCRenderer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3906, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3906, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_renderer = __pyx_t_1;
  __pyx_t_1 = 0;
 3907: 
+3908:     renderer.level = pymclevel.mclevel.loadWorld("World1")
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pymclevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_mclevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_loadWorld); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__581, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_renderer, __pyx_n_s_level, __pyx_t_2) < 0) __PYX_ERR(0, 3908, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__581 = PyTuple_Pack(1, __pyx_n_s_World1); if (unlikely(!__pyx_tuple__581)) __PYX_ERR(0, 3908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__581);
  __Pyx_GIVEREF(__pyx_tuple__581);
+3909:     renderer.viewDistance = 6
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_renderer, __pyx_n_s_viewDistance, __pyx_int_6) < 0) __PYX_ERR(0, 3909, __pyx_L1_error)
+3910:     renderer.detailLevelForChunk = lambda *x: 0
/* Python wrapper */
static PyObject *__pyx_pw_9_renderer_10rendermain_lambda4(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9_renderer_10rendermain_lambda4 = {"lambda4", (PyCFunction)__pyx_pw_9_renderer_10rendermain_lambda4, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9_renderer_10rendermain_lambda4(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_x = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lambda4 (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "lambda4", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_x = __pyx_args;
  __pyx_r = __pyx_lambda_funcdef_lambda4(__pyx_self, __pyx_v_x);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_lambda_funcdef_lambda4(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lambda4", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_int_0);
  __pyx_r = __pyx_int_0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9_renderer_10rendermain_lambda4, 0, __pyx_n_s_rendermain_locals_lambda, NULL, __pyx_n_s_renderer, __pyx_d, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_renderer, __pyx_n_s_detailLevelForChunk, __pyx_t_2) < 0) __PYX_ERR(0, 3910, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3911:     start = datetime.now()
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_now); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_1) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3911, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3911, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_start = __pyx_t_2;
  __pyx_t_2 = 0;
 3912: 
+3913:     renderer.loadVisibleChunks()
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_renderer, __pyx_n_s_loadVisibleChunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_1) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3913, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3913, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 3914: 
+3915:     try:
  {
    /*try:*/ {
/* … */
    }
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_PyThreadState_assign
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_PyThreadState_assign
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    __pyx_L10_try_end:;
  }
+3916:         while 1:
      while (1) {
 3917:             # for i in range(100):
+3918:             renderer.next()
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_renderer, __pyx_n_s_next); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3918, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        if (__pyx_t_1) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3918, __pyx_L3_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else {
          __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3918, __pyx_L3_error)
        }
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
+3919:     except StopIteration:
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration);
    if (__pyx_t_7) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
 3920:         pass
+3921:     except Exception, e:
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("_renderer.rendermain", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(0, 3921, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __pyx_v_e = __pyx_t_3;
+3922:         traceback.print_exc()
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_traceback); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3922, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_print_exc); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3922, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      if (__pyx_t_9) {
        __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3922, __pyx_L5_except_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      } else {
        __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3922, __pyx_L5_except_error)
      }
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+3923:         print repr(e)
      __pyx_t_8 = PyObject_Repr(__pyx_v_e); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3923, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_PrintOne(0, __pyx_t_8) < 0) __PYX_ERR(0, 3923, __pyx_L5_except_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;
 3924: 
+3925:     duration = datetime.now() - start
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_now); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3925, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3925, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_duration = __pyx_t_2;
  __pyx_t_2 = 0;
+3926:     perchunk = duration / len(renderer.chunkRenderers)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_renderer, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 3926, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_duration, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_perchunk = __pyx_t_1;
  __pyx_t_1 = 0;
+3927:     print "Duration: {0} ({1} chunks per second, {2} per chunk, {3} chunks)".format(duration,
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Duration_0_1_chunks_per_second_2, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
+3928:                                                                                     1000000.0 / perchunk.microseconds,
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_perchunk, __pyx_n_s_microseconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyFloat_DivideCObj(__pyx_float_1000000_0, __pyx_t_3, 1000000.0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 3929:                                                                                     perchunk,
+3930:                                                                                     len(renderer.chunkRenderers))
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_renderer, __pyx_n_s_chunkRenderers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 3930, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = NULL;
  __pyx_t_11 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_10)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_11 = 1;
    }
  }
  __pyx_t_9 = PyTuple_New(4+__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__pyx_t_10) {
    __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL;
  }
  __Pyx_INCREF(__pyx_v_duration);
  __Pyx_GIVEREF(__pyx_v_duration);
  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_11, __pyx_v_duration);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_11, __pyx_t_8);
  __Pyx_INCREF(__pyx_v_perchunk);
  __Pyx_GIVEREF(__pyx_v_perchunk);
  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_11, __pyx_v_perchunk);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_11, __pyx_t_3);
  __pyx_t_8 = 0;
  __pyx_t_3 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) __PYX_ERR(0, 3927, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3931: 
 3932:     # display.init( (640, 480), OPENGL | DOUBLEBUF )
+3933:     from utilities.gl_display_context import GLDisplayContext
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_GLDisplayContext);
  __Pyx_GIVEREF(__pyx_n_s_GLDisplayContext);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_GLDisplayContext);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_utilities_gl_display_context, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_GLDisplayContext); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_GLDisplayContext = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3934:     from OpenGL import GLU
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_GLU);
  __Pyx_GIVEREF(__pyx_n_s_GLU);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_GLU);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_OpenGL, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_GLU); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_GLU = __pyx_t_2;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3935: 
+3936:     import pygame
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_pygame, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pygame = __pyx_t_1;
  __pyx_t_1 = 0;
 3937: 
 3938:     # distance = 4000
+3939:     GL.glMatrixMode(GL.GL_PROJECTION)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glMatrixMode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_GL_PROJECTION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3939, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3939, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL;
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3939, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3940:     GL.glLoadIdentity()
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_glLoadIdentity); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_9) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3940, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3940, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3941:     GLU.gluPerspective(35, 640.0 / 480.0, 0.5, 4000.0)
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_GLU, __pyx_n_s_gluPerspective); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = PyFloat_FromDouble((640.0 / 480.0)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = NULL;
  __pyx_t_11 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_11 = 1;
    }
  }
  __pyx_t_2 = PyTuple_New(4+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_INCREF(__pyx_int_35);
  __Pyx_GIVEREF(__pyx_int_35);
  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_11, __pyx_int_35);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_11, __pyx_t_9);
  __Pyx_INCREF(__pyx_float_0_5);
  __Pyx_GIVEREF(__pyx_float_0_5);
  PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_11, __pyx_float_0_5);
  __Pyx_INCREF(__pyx_float_4000_0);
  __Pyx_GIVEREF(__pyx_float_4000_0);
  PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_11, __pyx_float_4000_0);
  __pyx_t_9 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3942:     h = 366
  __Pyx_INCREF(__pyx_int_366);
  __pyx_v_h = __pyx_int_366;
 3943: 
+3944:     pos = (0, h, 0)
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);
  __Pyx_INCREF(__pyx_v_h);
  __Pyx_GIVEREF(__pyx_v_h);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_h);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_0);
  __pyx_v_pos = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 3945: 
+3946:     look = (0.0001, h - 1, 0.0001)
  __pyx_t_1 = __Pyx_PyInt_SubtractObjC(__pyx_v_h, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_float_0_0001);
  __Pyx_GIVEREF(__pyx_float_0_0001);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_float_0_0001);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
  __Pyx_INCREF(__pyx_float_0_0001);
  __Pyx_GIVEREF(__pyx_float_0_0001);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_float_0_0001);
  __pyx_t_1 = 0;
  __pyx_v_look = ((PyObject*)__pyx_t_8);
  __pyx_t_8 = 0;
+3947:     up = (0, 1, 0)
  __Pyx_INCREF(__pyx_tuple__582);
  __pyx_v_up = __pyx_tuple__582;
/* … */
  __pyx_tuple__582 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_1, __pyx_int_0); if (unlikely(!__pyx_tuple__582)) __PYX_ERR(0, 3947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__582);
  __Pyx_GIVEREF(__pyx_tuple__582);
+3948:     GL.glMatrixMode(GL.GL_MODELVIEW)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_glMatrixMode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_GL_MODELVIEW); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3948, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_9);
    __pyx_t_9 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+3949:     GL.glLoadIdentity()
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_glLoadIdentity); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (__pyx_t_2) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3949, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3949, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 3950: 
+3951:     GLU.gluLookAt(pos[0], pos[1], pos[2],
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_GLU, __pyx_n_s_gluLookAt); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_pos, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_9 = __Pyx_GetItemInt_Tuple(__pyx_v_pos, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_pos, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
+3952:                   look[0], look[1], look[2],
  __pyx_t_10 = __Pyx_GetItemInt_Tuple(__pyx_v_look, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = __Pyx_GetItemInt_Tuple(__pyx_v_look, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = __Pyx_GetItemInt_Tuple(__pyx_v_look, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
+3953:                   up[0], up[1], up[2])
  __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_up, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_15 = __Pyx_GetItemInt(__pyx_v_up, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_16 = __Pyx_GetItemInt(__pyx_v_up, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __pyx_t_17 = NULL;
  __pyx_t_11 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_17)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_17);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_11 = 1;
    }
  }
  __pyx_t_18 = PyTuple_New(9+__pyx_t_11); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (__pyx_t_17) {
    __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_11, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_11, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_11, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_18, 3+__pyx_t_11, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_18, 4+__pyx_t_11, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_13);
  PyTuple_SET_ITEM(__pyx_t_18, 5+__pyx_t_11, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_14);
  PyTuple_SET_ITEM(__pyx_t_18, 6+__pyx_t_11, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_15);
  PyTuple_SET_ITEM(__pyx_t_18, 7+__pyx_t_11, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_16);
  PyTuple_SET_ITEM(__pyx_t_18, 8+__pyx_t_11, __pyx_t_16);
  __pyx_t_2 = 0;
  __pyx_t_9 = 0;
  __pyx_t_1 = 0;
  __pyx_t_10 = 0;
  __pyx_t_12 = 0;
  __pyx_t_13 = 0;
  __pyx_t_14 = 0;
  __pyx_t_15 = 0;
  __pyx_t_16 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_18, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 3954: 
+3955:     GL.glClearColor(0.0, 0.0, 0.0, 1.0)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_glClearColor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__583, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
  __pyx_tuple__583 = PyTuple_Pack(4, __pyx_float_0_0, __pyx_float_0_0, __pyx_float_0_0, __pyx_float_1_0); if (unlikely(!__pyx_tuple__583)) __PYX_ERR(0, 3955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__583);
  __Pyx_GIVEREF(__pyx_tuple__583);
 3956: 
+3957:     framestart = datetime.now()
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_now); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_18))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_18);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_18, function);
    }
  }
  if (__pyx_t_3) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3957, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3957, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __pyx_v_framestart = __pyx_t_8;
  __pyx_t_8 = 0;
+3958:     frames = 200
  __Pyx_INCREF(__pyx_int_200);
  __pyx_v_frames = __pyx_int_200;
+3959:     for i in xrange(frames):
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_v_frames);
  __Pyx_GIVEREF(__pyx_v_frames);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_frames);
  __pyx_t_18 = __Pyx_PyObject_Call(__pyx_builtin_xrange, __pyx_t_8, NULL); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (likely(PyList_CheckExact(__pyx_t_18)) || PyTuple_CheckExact(__pyx_t_18)) {
    __pyx_t_8 = __pyx_t_18; __Pyx_INCREF(__pyx_t_8); __pyx_t_11 = 0;
    __pyx_t_19 = NULL;
  } else {
    __pyx_t_11 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_19 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 3959, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  for (;;) {
    if (likely(!__pyx_t_19)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_8)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_18 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_11); __Pyx_INCREF(__pyx_t_18); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 3959, __pyx_L1_error)
        #else
        __pyx_t_18 = PySequence_ITEM(__pyx_t_8, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3959, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_18);
        #endif
      } else {
        if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_18 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_11); __Pyx_INCREF(__pyx_t_18); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 3959, __pyx_L1_error)
        #else
        __pyx_t_18 = PySequence_ITEM(__pyx_t_8, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3959, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_18);
        #endif
      }
    } else {
      __pyx_t_18 = __pyx_t_19(__pyx_t_8);
      if (unlikely(!__pyx_t_18)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 3959, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_18);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_18);
    __pyx_t_18 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+3960:         GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_glClear); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_COLOR_BUFFER_BIT); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_GL_DEPTH_BUFFER_BIT); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_Or(__pyx_t_15, __pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_14 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_16))) {
      __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_16);
      if (likely(__pyx_t_14)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_16, function);
      }
    }
    if (!__pyx_t_14) {
      __pyx_t_18 = __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_3); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3960, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_18);
    } else {
      __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3960, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_t_15, NULL); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3960, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_18);
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    }
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+3961:         renderer.draw()
    __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_renderer, __pyx_n_s_draw_2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    __pyx_t_15 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_16))) {
      __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_16);
      if (likely(__pyx_t_15)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
        __Pyx_INCREF(__pyx_t_15);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_16, function);
      }
    }
    if (__pyx_t_15) {
      __pyx_t_18 = __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_15); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3961, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    } else {
      __pyx_t_18 = __Pyx_PyObject_CallNoArg(__pyx_t_16); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3961, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_18);
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+3962:         pygame.display.flip()
    __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_pygame, __pyx_n_s_display); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3962, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_flip); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3962, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    __pyx_t_16 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_15))) {
      __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15);
      if (likely(__pyx_t_16)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
        __Pyx_INCREF(__pyx_t_16);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_15, function);
      }
    }
    if (__pyx_t_16) {
      __pyx_t_18 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3962, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    } else {
      __pyx_t_18 = __Pyx_PyObject_CallNoArg(__pyx_t_15); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3962, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_18);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
 3963: 
+3964:     delta = datetime.now() - framestart
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_now); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __pyx_t_18 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_15))) {
    __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_15);
    if (likely(__pyx_t_18)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
      __Pyx_INCREF(__pyx_t_18);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_15, function);
    }
  }
  if (__pyx_t_18) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3964, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  } else {
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3964, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_t_15 = PyNumber_Subtract(__pyx_t_8, __pyx_v_framestart); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_delta = __pyx_t_15;
  __pyx_t_15 = 0;
+3965:     seconds = delta.seconds + delta.microseconds / 1000000.0
  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_n_s_seconds); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_n_s_microseconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_18 = __Pyx_PyFloat_DivideObjC(__pyx_t_8, __pyx_float_1000000_0, 1000000.0, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyNumber_Add(__pyx_t_15, __pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __pyx_v_seconds = __pyx_t_8;
  __pyx_t_8 = 0;
+3966:     print "{0} frames in {1} ({2} per frame, {3} FPS)".format(frames, delta, delta / frames, frames / seconds)
  __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_0_frames_in_1_2_per_frame_3_FPS, __pyx_n_s_format); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_15 = __Pyx_PyNumber_Divide(__pyx_v_delta, __pyx_v_frames); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_16 = __Pyx_PyNumber_Divide(__pyx_v_frames, __pyx_v_seconds); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __pyx_t_3 = NULL;
  __pyx_t_11 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_18))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_18);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_18, function);
      __pyx_t_11 = 1;
    }
  }
  __pyx_t_14 = PyTuple_New(4+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  if (__pyx_t_3) {
    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_3); __pyx_t_3 = NULL;
  }
  __Pyx_INCREF(__pyx_v_frames);
  __Pyx_GIVEREF(__pyx_v_frames);
  PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_frames);
  __Pyx_INCREF(__pyx_v_delta);
  __Pyx_GIVEREF(__pyx_v_delta);
  PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_v_delta);
  __Pyx_GIVEREF(__pyx_t_15);
  PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_11, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_16);
  PyTuple_SET_ITEM(__pyx_t_14, 3+__pyx_t_11, __pyx_t_16);
  __pyx_t_15 = 0;
  __pyx_t_16 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  if (__Pyx_PrintOne(0, __pyx_t_8) < 0) __PYX_ERR(0, 3966, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 3967: 
+3968:     while 1:
  while (1) {
+3969:         evt = pygame.event.poll()
    __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_v_pygame, __pyx_n_s_event); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_18);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_poll); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __pyx_t_18 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
      __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_14);
      if (likely(__pyx_t_18)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
        __Pyx_INCREF(__pyx_t_18);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_14, function);
      }
    }
    if (__pyx_t_18) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3969, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    } else {
      __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3969, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_XDECREF_SET(__pyx_v_evt, __pyx_t_8);
    __pyx_t_8 = 0;
+3970:         if evt.type == pygame.MOUSEBUTTONDOWN:
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_evt, __pyx_n_s_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_pygame, __pyx_n_s_MOUSEBUTTONDOWN); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_18 = PyObject_RichCompare(__pyx_t_8, __pyx_t_14, Py_EQ); __Pyx_XGOTREF(__pyx_t_18); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3970, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_18); if (unlikely(__pyx_t_20 < 0)) __PYX_ERR(0, 3970, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    if (__pyx_t_20) {
/* … */
    }
  }
  __pyx_L18_break:;
+3971:             break
      goto __pyx_L18_break;
 3972:             # time.sleep(3.0)
 3973: 
 3974: 
+3975: import traceback
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_traceback, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_traceback, __pyx_t_1) < 0) __PYX_ERR(0, 3975, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3976: 
+3977: if __name__ == "__main__":
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_45 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_main, Py_EQ)); if (unlikely(__pyx_t_45 < 0)) __PYX_ERR(0, 3977, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_45) {
/* … */
  }
+3978:     import cProfile
    __pyx_t_1 = __Pyx_Import(__pyx_n_s_cProfile, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3978, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_d, __pyx_n_s_cProfile, __pyx_t_1) < 0) __PYX_ERR(0, 3978, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3979: 
+3980:     cProfile.run("rendermain()", "mcedit.profile")
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cProfile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3980, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_run); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3980, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__1293, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3980, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;